[ BOJ ] 7562 나이트의 이동 - python 문제풀이
7562 나이트의 이동 접근 : 좌표와 이동횟수를 정보에 담아 리스트에 담고 덱에서 하나씩 꺼내보면서 확인 풀이방법 1. 나이트가 한 번에 이동할 수 있는 좌표들을 구해 [행좌표, 열좌표, 이동회차] 원소로 만들기 2. 덱에 정보들을 담고 매번 확인하되, 만약 넣기 전에 일치하는 좌표가 있으면 바로 break ''' 시작 좌표 i,j 나이트가 한 번에 이동할 수 있는 좌표들 i-2,j-1 / i-2,j+1 / i-1,j-2 / i-1,j+2 i+1,j-2 / i+1,j+2 / i+2,j-1 / i+2, j+1 ''' from collections import deque d = [(-2,-1),(-2,1),(-1,-2),(-1,2),(1,-2),(1,2),(2,-1),(2,1)] for tc in rang..
2021. 7. 19.
[ BOJ ] 1759 암호만들기 - python 문제풀이
1759 암호만들기 접근 : 재귀로 문자열 조합 만들어가면서 지정한 길이(L) 만큼의 문자열을 완성했을 때 조건을 만족하면 결과에 추가, 아니면 중단 풀이방법 - 일단 먼저 알파벳 정렬 - 인덱스를 0부터 1씩 증가시키면서 재귀로 들어가기 - 마지막에 매번 모음, 자음 카운트 계산하지 않고, 모음 자음 개수 정보를 함께 넘겨주기 def make(s,mo,ja,idx): global stack if len(s) == L: if mo>=1 and ja>=2: print(s) return for i in range(idx,C): if al[i] in ['a','e','i','o','u']: make(s+al[i],mo+1,ja,i+1) else: make(s+al[i],mo,ja+1,i+1) L,C = map..
2021. 7. 19.
[ BOJ ] 1260 DFS와 BFS - python 문제풀이
1260 DFS와 BFS 접근 : 기본 DFS, BFS 구현 문제라 별다른 전략은 세우지 않았고, 다양한 방법으로 풀어보려 했다 풀이 방법 1. 함수X while문으로 stack 활용해서 풀기 2. dfs는 함수 활용, bfs는 deque 활용하기 방법1. 함수 없이 while문 활용해서 푼 방법 N,M,V = map(int, input().split()) # 정점 i를 key, i와 연결된 정점들을 리스트에 담아 value로 갖는 딕셔너리 info info = {i:[] for i in range(1,N+1)} for _ in range(M): a,b = map(int, input().split()) info[a].append(b) info[b].append(a) # 문제 조건 : 정점이 작은 순서대로..
2021. 7. 16.
[ SWEA ] D3 - 1221, 10912, 4676 - python 문제풀이
1221 GNS 접근법 : 딕셔너리에서 개수만 불러와서 순서에 맞춰 출력, join 활용 order = ["ZRO","ONE","TWO","THR","FOR","FIV","SIX","SVN","EGT","NIN"] for _ in range(int(input())): d = {"ZRO":0,"ONE":0,"TWO":0,"THR":0,"FOR":0,"FIV":0,"SIX":0,"SVN":0,"EGT":0,"NIN":0} tc,n = input().split() for num in input().split(): d[num] +=1 print(tc) for o in order: print(" ".join([o]*d[o]),end=" ") print() 10912 외로운 문자 접근법 : 정렬시켜놓고 idx를 마..
2021. 7. 13.
[ SWEA ] D3 - 10804, 10200, 6692, 5789 - python 문제풀이
10804 문자열의 거울상 res = [] d = {"b":"d","d":"b","p":"q","q":"p"} for tc in range(int(input())): s = input() r = list(map(lambda x:d[x],s))[::-1] res.append("#{} {}".format(tc+1, "".join(r))) print("\n".join(res)) 10200 구독자 전쟁 테스트케이스가 많은지 매번 프린트하는것보다 마지막에 join으로 한번 하는게 훨씬 빠름 r = [] for tc in range(int(input())): N,P,T = map(int, input().split()) r.append("#{} {} {}".format(tc+1, min(P,T),P+T-N if N
2021. 7. 8.