일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- text
- BOB
- 4101
- Python
- 영재원
- boj
- 영재교육원
- 10833
- 정보보호 영재교육원
- BoB 7기
- BoB 후기
- 11943
- 1547
- 5586
- 차세대 보안 리더 양성
- 2965
- 차세대 보안 리더 양성 프로그램
- acmicpc
- 5086
- Best of the Best
- 10995
- 2605
- 2476
- 2501
- 2506
- 공주대 정보보호
- 11109
- 리뷰
- 정보보호 영재원
- EOF
- Today
- Total
목록boj (348)
짱해커가 되어보자
문제 큐의 자료구조를 흉내내는게 목적이다 push, pop, size, empty, front, back의 명령어를 구현하면 된다 * pop은 맨 처음 데이터를 제거 및 출력해야 한다 입력 : n(N : 1 ~ 10,000), n에 대한 출력 : 풀이 문제를 잘 읽고 풀지 않아 pop 때문에 여러번 틀렸다 import sys from collections import deque q = deque() for _ in range(int(sys.stdin.readline())): l = sys.stdin.readline().split() if(l[0] == 'push'): q.append(l[1]) elif(l[0] == 'pop'): print(q.popleft() if q else -1) elif(l[0]..
문제 N개 만큼의 카드를 입력받고(l1), M개 만큼의 입력받은 수가 l1에 몇개가 있는지 각각 출력하는 것이 목적이다 N, M : N(1 ~ 500,000) 입력 : n, n에 대한 (N N N ...)(-10,000,000 ~ 10,000,000), m, m에 대한 (N N N ...)(-10,000,000 ~ 10,000,000) 출력 : m에 대한 (N N N ...) 풀이 l = {} input() for i in input().split(): if not i in l: l[i] = 0 l[i] += 1 input() for i in input().split(): print(l[i] if i in l else 0, end=' ')
문제 장부에 돈을 기입하고 총 금액을 출력한다 그러나 0이 입력되면, 바로 전에 작성한 숫자는 잘못된 숫자라 지워야 한다 입력 : n(N : 1 ~ 100,000), n에 대한 (N : 0 ~ 1,000,000) 출력 : 풀이 스택으로 해결하였다 l = [] for _ in range(int(input())): i = int(input()) if(i == 0 and l): l.pop() else: l.append(i) print(sum(l))
문제 이전 4949 번의 문제와 유사한 괄호가 제대로 닫혀있는지 판단하는 문제이다 N개의 문자열이 주어지며, 올바르면 YES 아니면 NO를 출력하면 된다 입력 : n(N : ..? 오타인듯하다), 출력 : 풀이 for _ in range(int(input())): s = [] for i in input(): if(i in '('): s.append(i) elif(i in ')'): if(s and s[-1]+i == '()'): del s[-1] else: s.append(i) print('NO' if s else 'YES')
문제 온전히 '.'으로만 끝날 때 까지 문자열을 입력하며, 입력받은 문자열이 '()' 아니면 '[]'으로 잘 닫혀있어야 yes 아닐 경우 no를 출력하면 된다 * 괄호가 없어도 yes * '.'이 입력되면 끝나야 한다 입력 : '.'을 받을 때 까지 출력 : 풀이 문자열을 입력받으며 '.'으로 끊었을 때 데이터가 없을 때까지 반복을 수행한다 반복을 수행하며 스택에 괄호를 쌓아두었다가 온전히 잘 닫히는 괄호를 만나면 해당 데이터를 지운다 import sys for l in sys.stdin: s, l = [], l.split('.')[0] if not l: break for i in l: if(i in '[('): s.append(i) elif(i in '])'): if(s and (s[-1]+i == '..
문제 N개의 카드 덱이 있으며, N을 맨 바닥으로 1부터 N까지 정렬되어 있다 이 때 마지막 한 장이 남을 때 까지, 맨위에 있는 카드는 제거, 그 밑 카드는 맨 아래로 옮기는걸 반복했을 때 마지막 남은 카드의 번호는 무엇인지 묻는 문제이다 입력 : n(N : 1 ~ 500,000) 출력 : 풀이 l, n = [0, 1, 2, 2] + [0] * 499997, int(input()) for i in range(4, n+1): l[i] = l[i-1] + 2 if(i-1 == l[i-1]): l[i] = 2 print(l[n])
문제 N개의 수를 입력받아 다음의 결과를 출력한다 산술 평균 중앙값 최빈값 : 여러개 있을 경우 두 번째로 작은 값 범위 : MAX - MIN * N은 홀수로 제공 n : N(1 ~ 500,000) 입력 : n(N : 1 ~ 500,000), (-4,000 ~ 4,000) 출력 : 조건 1,2,3,4 풀이 import sys from collections import Counter n = int(sys.stdin.readline()) l = sorted([int(sys.stdin.readline()) for _ in range(n)]) l_c = Counter(l).most_common() print( round(sum(l)/n), l[n//2], l_c[0][0] if n == 1 or l_c[0][1..
문제 입력받은 n개의 숫자에서 소수의 갯수를 출력하는 것이 목적이다 입력 : n(N : 1 ~ 100), n에 대한 (1 ~ 1,000) 출력 : 풀이 def cp(n): if(n == 2): return True if(n
문제 n1개의 숫자 리스트(l1)를 입력받고, n2개의 숫자 리스트(l2)를 받는다 여기서 l2의 각 숫자들이 l1에 존재하면 1, 없으면 0을 출력한다 입력 : n1(N : 1 ~ 100,000), n1에 대한 (N N N ...), n2(N : 1 ~ 100,000), n2에 대한 (N N N ...) 출력 : n2에 대한 \n 풀이 딕셔너리 형태로 존재하는 값들을 체크하여 이후 들어오는 값들로 그 결과를 출력하도록 하였다 l, n1, l1, n2, l2 = {}, input(), input().split(), input(), input().split() for i in l1: l[i] = 1 for i in l2: print(1 if i in l else 0)
문제 x, y에 대한 좌표를 n개만큼 입력받은 후 y, x 순으로 정렬하여 출력하는 문제이다 * 이전의 11650 문제와 동일하나 정렬 우선순위가 x,y에서 y,x로 변경되었다 입력 : n(N : 1 ~ 100,000), n에 대한 x, y(N : -100,000 ~ 100,000) 출력 : n에 대한 풀이 l = [list(map(int, input().split())) for _ in range(int(input()))] for i in sorted(l, key=lambda e: (e[1], e[0])): print(i[0], i[1])