본문 바로가기

분류 전체보기

(120)
[Python, 파이썬] SWEA 5356. 의석이의 세로로 말해요 칠판에 붙여진 단어들이 주어질 때, 의석이가 세로로 읽은 순서대로 글자들을 출력하는 문제.  T = int(input()) # 테스트케이스의 개수 Tfor test_case in range(1, T+1): N = 5 matrix = [input() for i in range(5)] all_length = [len(i) for i in matrix] # 모든 길이 저장 length = max(all_length) # 최대 길이만 print("#%d " %(test_case), end='') for i in range(length): # 최대 열의 길이 for j in range(N): # 행 반복 if(len(matrix[j]) > i..
[Python, 파이썬] SWEA 1961. 숫자 배열 회전 N x N 행렬이 주어질 때, 시계 방향으로 90도, 180도, 270도 회전한 모양을 출력하는 문제.  T = int(input()) # 테스트케이스의 개수 Tfor test_case in range(1, T+1): N = int(input()) # 행렬 N matrix = [input().split() for i in range(N)] reverse = list(zip(*matrix)) # 전치 행렬 print("#%d" %(test_case)) # 테스트케이스의 번호 출력 for i in range(N): rotate90 = ''.join(reverse[i]) # 문자열로 변환 rotate90 = rotate90[::-1] # 역순으로 만든다 ro..
[Python, 파이썬] SWEA 6485. 삼성시의 버스 노선 P개의 버스 정류장에 대해 각 정류장에 몇 개의 버스 노선이 다니는지 구하는 문제.  T = int(input()) # 테스트케이스의 개수 Tfor test_case in range(1, T+1): N = int(input()) # 버스 노선의 길이 N bus = [0 for i in range(5001)] # 버스 노선 for i in range(N): a, b = map(int, input().split()) # 시작 번호, 끝 번호 for j in range(a, b+1): bus[j] += 1 # 노선 ++ P = int(input()) # 정류소 길이 answer = '' for i in range(P): ..
[Python, 파이썬] SWEA 1238. [S/W 문제해결 기본] 10일차 - Contact 비상연락망과 연락을 시작하는 당번에 대한 정보가 주어질 때, 가장 나중에 연락을 받게 되는 사람 중 번호가 가장 큰 사람을 구하는 문제.  한 번 연락을 받은 사람에게 다시 연락을 하진 않고, 3, 6, 11, 22번과 같이 연락을 받을 수 없는 사람도 존재할 수 있다. 연락을 받을 수 있는 사람들 중 가장 마지막으로 연락을 받고, 그 중 가장 큰 번호를 구한다. from collections import dequedef BFS(i): depth[i] = 1 # 깊이 저장 q = deque([i]) # 큐에 초기값 세팅 while q: now = q.popleft() # 큐에서 값을 꺼낸다. for p in graph[now]: # 연결리스트가 있고 ..
[Python, 파이썬] SWEA 3499. 퍼펙트 셔플 N개의 카드가 있는 덱이 주어질 때 이를 퍼펙트 셔플하면 어떤 순서가 되는지 구하는 문제.  카드를 퍼펙트 셔플 한다는 것은, 카드 덱을 정확히 절반으로 나누고 나눈 것들에서 교대로 카드를 뽑아 새로운 덱을 만드는 것을 의미한다. 주어진 카드를 페퍽트 셔플해 새로운 덱을 만들때 어떤 순서가 되는지 구한다. 이때 N이 홀수일 시, 먼저 놓는 카드에 한장 더 가게 한다.  import mathT = int(input()) # 테스트케이스의 개수 Tfor test_case in range(1, T+1): N = int(input()) # 카드 개수 N card = input().split() # N개의 카드 이름 suffle = [] # 카드 덱 나누기 num = math.ceil(..
[Python, 파이썬] SWEA 3307. 최장 증가 부분 수열 주어진 두 수열의 최장 증가 부분 수열(Longest Increasing Subsequence)의 길이를 계산하는 문제.  T = int(input()) # 테스트케이스의 개수 Tfor test_case in range(1, T+1): N = int(input()) # 수열의 길이 A = list(map(int, input().split())) # 수열 L = [0 for i in range(N)] # 최대 증가 수열의 길이 for i in range(N): max_ = 1 for j in range(i): if(A[j]    [문제풀이] DP를 통해 푸는 문제.L[i] = (L[i] >= L[j])중 가장 큰 L[j]+1 ..
[Python, 파이썬] SWEA 1231. [S/W 문제해결 기본] 9일차 - 중위순회 주어진 트리를 in-order, 중위 순회해 각 노드를 읽었을 때 나오는 단어를 구하는 문제.def DFS(i): if(i > N): # 트리 노드 개수가 끝나면 return DFS(2*i) # 왼쪽 노드 탐색 print(node[i], end='') DFS(2*i+1) # 오른쪽 노드 탐색T = 10 # 테스트케이스의 개수 Tfor test_case in range(1, T+1): N = int(input()) # 노드 개수 N node = [0 for i in range(N+1)] # 트리 입력받기 for _ in range(1, N+1): n, v = input().split()[:2] node[int(n)] = v ..
[Python, 파이썬] SWEA 1221. [S/W 문제해결 기본] 5일차 - GNS 0 ~ 9 의 값을 나타내는 단어가 섞여 있는 문자열을 받아 작은 수부터 차례로 정렬하여 출력하는 문제.  T = int(input()) # 테스트케이스의 개수 Tfor test_case in range(1, T+1): _, N = input().split() # 테스트케이스 번호, 단어의 갯 ailen = {"ZRO":0, "ONE":1, "TWO":2, "THR":3, "FOR":4, "FIV":5, "SIX":6, "SVN":7, "EGT":8, "NIN":9} reverse_ailen = {v: k for k, v in ailen.items()} word = list(map(lambda x: ailen[x], input().split())) # 숫자로 해독한 단어들 wo..