같은 숫자에 해당된 글자끼리 리스트를 만들고 그 리스트에 해당되면 time에 시간을 추가하는 방식으로 해결했다. import sys T = list(map(str, sys.stdin.readline().rstrip())) # input값 리스트로 저장 X = [[], ['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I'], ['J', 'K', 'L'], ['M', 'N', 'O'], ['P', 'Q', 'R', 'S'], ['T', 'U', 'V'], ['W', 'X', 'Y', 'Z']] time = 0 # 시간 초기화 for i in T: if i in X[1]: time += 3 elif i in X[2]: time += 4 elif i in X[3]: time +..
서로 연결되었는지 확인하기 위해 각 번호의 컴퓨터에 연결되어있는 컴퓨터를 나타내는 리스트를 만든다 import sys N = int(sys.stdin.readline()) M = int(sys.stdin.readline()) # 컴퓨터 각각에 연결되어 있는 컴퓨터 번호의 리스트 adj = [[] for _ in range(N + 1)] # 연결되어있는 정보가 주어지면 각각의 컴퓨터 번호의 리스트에 저장 for i in range(M): a, b = map(int, sys.stdin.readline().split()) adj[a].append(b) adj[b].append(a) for i in range(N+1): adj[i].sort() visited = [0 for _ in range(N + 1)] s..
회전하는 큐 왼쪽으로 돌릴 때는 index가 0인 원소를 뒤에 넣고 앞을 삭제, 오른쪽으로 돌릴 때는 index가 -1인 원소를 앞에 넣고 뒤를 삭제하면 된다 import sys N, M = map(int, sys.stdin.readline().split()) K = list(map(int, sys.stdin.readline().split())) A = [i for i in range(1, N + 1)] cnt = 0 for i in range(M): A_len = len(A) A_index = A.index(K[i]) if A_index < A_len - A_index: while True: if A[0] == K[i] : del A[0] break else : A.append(A[0]) del A[0..
스택 문제인데 주어진 수열이 아닌 수열의 인덱스를 스택에 넣어야 하는 문제 import sys N = int(sys.stdin.readline()) A = list(map(int, sys.stdin.readline().split())) # 수열 입력받기 result = [-1 for _ in range(N)] # 결과값 저장 (오큰수가 없으면 -1이므로 미리 -1로 설정해놓는다) stack = [] # index를 저장할 스택 stack.append(0) # 첫번째 index 0을 저장한다 for i in range(1, N): while stack and A[stack[-1]] < A[i]: # 스택이 비어있지 않고 오큰수가 있다면 result[stack[-1]] = A[i] # 결과값을 오큰수로 바꿔..
이렇게 보면, 호수 YYXX 중 뒷부분 XX는 N을 H로 나눈 몫과 같다. (나누어떨어질 때만 빼고) 앞부분 YY는 N을 H로 나눈 나머지와 같다. (나누어떨어질 때만 빼고) 나누어떨어질 때를 예외로 두고 YY와 XX를 구하면 된다. import sys T = int(sys.stdin.readline()) H, W, N = 0, 0, 0 for i in range(T): H, W, N = map(int, sys.stdin.readline().split()) # N이 H로 나누어떨어지지 않을 때 if N % H != 0: X = N//H + 1 if len(str(X)) == 1: # X가 한 자리수일때 앞에 0을 더해줌 X = '0' + str(X) Y = N % H # N이 H로 나누어떨어질 때 els..
제곱했을 때 각 수의 끝 자리수가 어떤지만 보면 풀 수 있다 숫자 - 컴퓨터 번호(일의 자리수) 0 - 10 1 - 1 2 - 2 4 8 6 3 - 3 9 7 1 4 - 4 6 5 - 5 6 - 6 7 - 7 9 3 1 8 - 8 4 2 6 9 - 9 1 import sys T = int(sys.stdin.readline()) for i in range(T): a, b = map(int, sys.stdin.readline().split()) a = a % 10 if a == 0 : print(10) elif a == 1 or a == 5 or a == 6: print(a) elif a == 4 or a == 9: if b % 2 == 1: print(a) else: print(10 - a) elif a ..