본문 바로가기

반응형

백준

[백준] 17298 - 오큰수 1. 문제 2. 코드 n = int(input()) l = list(map(int, input().split())) stack = [] answer = [-1 for i in range(n)] for i in range(n-1): stack.append(i) while 1: if len(stack) == 0: break if l[stack[-1]] < l[i+1]: #print(l[i+1]) answer[stack[-1]] = l[i+1] stack.pop() else: break for i in range(n): print(answer[i]) 3. 풀이 더보기
[백준] 1874 - 스택 수열 1. 문제 2. 코드 n = int(input()) n_l = [] stack = [] flag = 0 cnt = 1 for i in range(n): temp = int(input()) if len(stack) != 0 and stack[len(stack)-1] == temp: stack.pop() n_l.append('-') elif flag == 0: while 1: stack.append(cnt) n_l.append('+') cnt += 1 if stack[len(stack)-1] == temp : stack.pop() n_l.append('-') break if cnt > n: flag = 1 break if flag == 0: for i in n_l: print(i) else: print('N.. 더보기
[백준] 4949 - 균형잡힌 세상 1. 문제 2. 코드 l = [] while 1: a = input() if a == '.': break fault_flag = 0 l = [] for i in range(len(a)): if a[i] == '(' or a[i] == '[': l.append(a[i]) elif a[i] == ')': if len(l) == 0: fault_flag = 1 break temp = l.pop() if temp != '(': fault_flag = 1 break elif a[i] == ']': if len(l) == 0: fault_flag = 1 break temp = l.pop() if temp != '[': fault_flag = 1 break if fault_flag == 0 and len(l) == .. 더보기
[백준] 10828 - 스택 1. 문제 2. 코드 import sys #read 20 l = [] num = int(input()) for i in range(num): a = sys.stdin.readline() #push if a[0] == 'p' and a[1] == 'u': i, x = a.split() l.append(int(x)) #pop elif a[0] == 'p': if len(l) == 0: print(-1) else: print(l.pop()) #size elif a[0] == 's': print(len(l)) #empty elif a[0] == 'e': if len(l) == 0: print(1) else: print(0) #top else: if len(l) == 0: print(-1) else: print(.. 더보기
[백준] 1158번 - 요세푸스 문제 1. 문제 https://www.acmicpc.net/problem/1158 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다. N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오. 2. 코드 n, k = map(int, input().split()) l = [i for i in range(n)] temp = k-1 pr.. 더보기
[백준] 2609번 - 최대공약수와 최소공배수 (feat. 파이썬으로 최대공약수, 최소공배수 구하기) 1. 문제 두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오. 2. 코드 import math a, b = map(int, input().split()) print(math.gcd(a, b)) print(math.lcm(a, b)) 3. 주요 포인트 이미 python에는 최소공배수와 최대공약수를 구하는 함수가 내장되어 있다. 놀라운 사실! 나도 몰랐다. 하하. 그래서 삽질이란 삽질은 다하다가 math에 내장되어 있다는 것을 깨달았다. 아주 허무하지만,,, 그래,,,, 있으니 참 다행이다. 더보기
[백준] 1436번 - 영화감독 숌 1. 문제 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조지 루카스와 피터 잭슨을 뛰어넘는다는 것을 보여주기 위해서 영화 제목을 좀 다르게 만들기로 했다. 종말의 숫자란 어떤 수에 6이 적어도 3개이상 연속으로 들어가는 수를 말한다. 제일 작은 종말의 숫자는 666이고, 그 다음으로 큰 수는 1666.. 더보기
[백준] 11729 - 하노이 탑 이동 순서 (feat. 하노이 탑 알고리즘 파이썬) 1. 문제 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다. 아래 그림은 원판이 5개인 경우의 예시이다. 2. 코드 def move(N, start, to): print(start, to) def hanoi(N, start, to, via): if N == 1: move(1, start, to) else: hanoi(N-1,.. 더보기

반응형