Programming [Python] (411) 썸네일형 리스트형 #280 백준 파이썬 [10799] 쇠막대기 - 스택 https://www.acmicpc.net/problem/10799 SOLUTION 스택을 이용해서 풀 수 있다. 1. (이 나오면 스택에 넣는다. 2. ()이 나오면 현재 스택에 있는 ( 수만큼 정답에 더해준다. 3. )이 나오면 스택의 (를 pop하고 정답에 1을 더해준다. PYTHON CODE bar_razor = list(input()) answer = 0 stack = [] for i in range(len(bar_razor)): if bar_razor[i] == '(': #스택 쌓기 stack.append('(') else: if bar_razor[i-1] == '(': #()라면 (를 pop하고 현재 스택에 들어있는 ( 수만큼 값을 더해준다. stack.pop() answer += len(s.. #279 백준 파이썬 [16678] 모독 https://www.acmicpc.net/problem/16678 SOLUTION 단순히 총합 한 뒤, 1~N까지 더한 값을 빼준다고 생각한 것은 오산이었다. 같은 수가 있을 경우가 있기 때문. 예를 들어 1 1 1 2 2 조합이라면 해커를 고용하지 않아도 답이 해결된다. 따라서 먼저 명예도를 오름차순으로 정렬해준 뒤 1부터 max_honor을 높여가며 몇 번의 action을 취해야 하는지 보았다. PYTHON CODE N = int(input()) honors = [] for _ in range(N): honors.append(int(input())) max_honor = 1 action = 0 for num in sorted(honors): #정렬 먼저 if num >= max_honor: acti.. #278 백준 파이썬 [16677] 악마 게임 https://www.acmicpc.net/problem/16677 PYTHON CODE m = input() N = int(input()) word_list = [] for _ in range(N): w, g = input().split() temp = 0 #m문자열 확인용 other_character = 0 #m문자열 외의 문자 개수 확인 complete = False #m문자열 완성? for character in w: #문자 돌면서 하나씩 확인 if character == m[temp] and not complete: #단어가 완성되면 그 이후 문자는 쓸모 없으므로 temp += 1 #다음 문자로 넘어감 if temp == len(m): #단어가 완성되었는가? temp -= 1 #리스트 범위 밖으.. #277 백준 파이썬 [16676] 근우의 다이어리 꾸미기 https://www.acmicpc.net/problem/16676 SOLUTION 처음에 해당 수만 표시하면 되는줄로 알고 했다가 틀렸다. 0부터 N까지 전부다. 문제를 잘보자 정답률 낮은 이유가 쉽게 보고 빨리 풀어서 그런듯하다. 근데 다르게 풀어도 쉽긴 하다. 스티커 덱은 같은 수를 두번 쓰는 경우 증가한다. 1: 0 2: 11 3: 111 4: 1111 5: 11111 ... 1이 연속되는 수가 해당 스티커를 필요로하는 최소 숫자다. 5개가 필요한 최소 연봉은 11111 이란 것. 따라서 주어진 수가 어디 사이에 위치해있는 지만 알면 쉽게 풀 수 있다. 파이썬으로 수를 str로 바꾸고, 1을 추가해주고 다시 int로 바꾸어서 크기를 대조해보았다. PYTHON CODE N = int(input()).. #276 백준 파이썬 [16675] 두 개의 손 https://www.acmicpc.net/problem/16675 PYTHON CODE ML, MR, TL, TR = input().split() #둘다 다를 경우 if ML != MR and TL != TR: print("?") #MS만 같을 경우 elif ML == MR and TL != TR: if ML == 'S' and (TL == 'R' or TR == 'R'): print("TK") elif ML == 'P' and (TL == 'S' or TR == 'S'): print("TK") elif ML == 'R' and (TL == 'P' or TR == 'P'): print("TK") else: print("?") #TK만 같을 경우 elif ML != MR and TL == TR: if T.. #275 백준 파이썬 [16674] 2018년을 되돌아보며 https://www.acmicpc.net/problem/16674 PYTHON CODE N = list(map(int, str(input()))) dict_2018 = {2:0, 0:0, 1:0, 8:0} #dict로 인풋 받음 answer = False #0일 경우 탈출문 for i in N: try: dict_2018[i] += 1 except: #2018이 아닌 다른 수가 있을 경우 print(0) answer = True break if answer == False: if dict_2018[2] != 0 and dict_2018[0] != 0 and dict_2018[1] != 0 and dict_2018[8] != 0: if dict_2018[2] == dict_2018[0] == dict_2.. #274 백준 파이썬 [9655] 돌 게임 https://www.acmicpc.net/problem/9655 SOLUTION 시작하는 사람이 정해져있고, 1개 혹은 3개만 가져갈 수 있다. (2개가 남았을 때 2개만 가져가지 못한다) 1일 때는 SK 2일 때는 CY 3일 때는 다시 SK 4일 때는 CY가 이긴다. 그렇다면 n개가 있을 때는 어떻게 구할까? SK가 이기는 경우의 수를 가정해보자. 이는 점화식으로 풀 수 있다. 1개 혹은 3개만 가져갈 수 있으므로 상대방의 선택지는 n-1 혹은 n-3이 될 것이다. 따라서 자신이 가져갈 수 있는 다음 경우의 수는 n-2, n-4, n-6 총 3가지가 될 것이다. 이렇게 쭉 내려가다 보면 결국 SK는 n이 홀 수 일 때 이길 수 있고, 짝수 일 때는 방법이 없이 CY가 우승을 차지하게 된다. PYTHO.. #273 백준 파이썬 [5597] 과제 안 내신 분..? https://www.acmicpc.net/problem/5597 Python Code students = [i for i in range(1,31)] for _ in range(28): applied = int(input()) students.remove(applied) #소거 print(min(students)) print(max(students)) 이전 1 ··· 14 15 16 17 18 19 20 ··· 52 다음