먼저 집합 자료형(set)을 이용하여 중복되는 단어들을 필터링한다. 그리고 sorted 함수를 사용하여 정렬한다. 이때 key 값은 lambda 함수를 사용하여 길이를 먼저 정렬하고 길이가 같을 때 사전 순으로 정렬하도록 한다.문제풀이N = int(input()) words = set() for rpt in range(0,N): words.add(input()) for rpt in sorted(words,key=lambda x:(len(x),x)): print(rpt)
처음 보면 문제가 난해해 보일 수 있다. 하지만 막상 점화식을 세워보면 그리 어려운 문제는 아니다.P(10)까지 자세히 살펴보면 3이 적힌 6번째 삼각형부터 점화식 P(N) = P(N-1) + P(N-5)이 적용된다는 것을 알 수 있다.문제풀이P = [0] * 100 P[0:5] = 1,1,1,2,2,3 T = int(input()) for rpt in range(6,100): P[rpt] = P[rpt - 1] + P[rpt - 5] for Rpt in range(0,T): N = int(input()) print(P[N - 1])
8*8의 정상적인 체스판을 2가지 준비한다.(왼쪽 위가 흰색일 때와 검은색일때)이후 입력받은 체스판과 비교하며 다시 칠해야 하는 부분이 가장 적은 횟수를 골라 출력한다.문제풀이N, M = map(int, input().split()) board = [[0] * 50 for i in range(50)] rst = 64 whiteboard = [["WBWBWBWB"], ["BWBWBWBW"], ["WBWBWBWB"], ["BWBWBWBW"], ["WBWBWBWB"], ["BWBWBWBW"], ["WBWBWBWB"], ["BWBWBWBW"]] blackboard = [["BWBWBWBW"], ["WBWBWBWB"], ["BWBWBWBW"], ["WBWBWBWB"], ["BWBWBWBW"], ["WBWBWBWB..