본문 바로가기

백준107

[백준] 14568번 2017 연세대학교 프로그래밍 경시대회 사용 언어 - Python3 문제 - 2017 연세대학교 프로그래밍 경시대회 14568번: 2017 연세대학교 프로그래밍 경시대회 규칙에 맞게 사탕을 분배하는 경우의 수를 출력한다. 택희, 영훈이, 남규가 받은 사탕의 수를 각각 A, B, C개라고 할 때, 서로 다른 (A, B, C) 순서쌍의 수를 세면 된다. 만일 규칙에 맞게 사탕을 분 www.acmicpc.net 정답 완전탐색 - 각 조건 생각하기 (정답 맞춘 여부 O) 1. range 범위 지정하기 영훈이는 1부터 N-3까지 가능 남규는 영훈보다 2이상이어야 하므로 영훈+2부터 N-1까지 가능 택희는 N에서 영훈과 남규를 뺀 나머지이고, 1보다 크며 짝수조건을 만족 => cnt += 1 N = int(input()) # 사탕 N개 cnt = 0 f.. 2023. 9. 10.
[백준] 1816번 암호 키 사용 언어 - Python3 문제 - 암호 키 1816번: 암호 키 현대 사회에서 통용되고 있는 많은 종류의 암호 시스템에서는, 매우 큰 소수의 곱으로 만들어진 수를 암호 키로 이용하는 경우가 많다. 현실적으로 매우 큰 수를 빠른 시간 내에 소인수분해하는 www.acmicpc.net 정답 모든 소인수가 1000,000보다 작은지 확인 1. 소인수 = 1을 제외한 약수 2. 2부터 1000000까지 수로 나누고 나누어떨어진다면, 100만 이하의 약수가 존재한다는 의미 NO를 출력하고 break => 모든 경우의 수를 생각하는 완전탐색 방법 3. 100만까지 갔다면, 100만 이하의 약수가 존재하지 않는다는 뜻이므로 YES를 출력 N = int(input()) for _ in range(N): S = int.. 2023. 9. 10.
[Python3] 백준 1697번 숨바꼭질 사용 언어 - Python3 문제 - 숨바꼭질 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 정답 BFS 재귀함수 (정답 맞춘 여부 X) from collections import deque def bfs(): q = deque() q.append(n) while q: x = q.popleft() if x == k: print(dist[x]) break for nx in (x-1,x+1,x*2): if 0 2023. 4. 19.
[Python3] 백준 2117번 원형 댄스 사용 언어 - Python3 문제 - 원형 댄스 2117번: 원형 댄스 N(1 ≤ n ≤ 32767)명의 사람들이 잔치에서 춤을 추게 되었다. 처음에는 1번부터 N번까지의 사람들이 차례대로, 둥글게 손을 잡고 서 있다. 그리고 춤이 끝날 때에는 이 순서가 반대(거꾸로, 뒤집힌) www.acmicpc.net 정답 규칙 찾기 구현 (정답 맞춘 여부 X) n 경우의 수 0 n == 3 => 경우의 수 1 n >= 4 => 등차수열 이용 2, 4, 6, 9, 12, 16, 20... +2씩 3번 +3씩 2번 +4씩 2번 n = int(input()) if n 2023. 4. 19.
[Python3] 백준 1713번 후보 추천하기 사용 언어 - Python3 문제 - 후보 추천하기 1713번: 후보 추천하기 첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대 www.acmicpc.net 정답 list 인덱싱 구현 (정답 맞춘 여부 X) 사진틀과 사진틀 개수를 저장할 list를 만든다. n = int(input()) #사진들 개수 c = int(input()) # 전체 학생의 총 추천 횟수 vote = list(map(int,input().split())) # 추천받은 학생을 나타내는 번호 pic = [] # 사진틀 num_pic = [] # 사진틀 추천개수 for v in vote: .. 2023. 4. 19.
[Python3] 백준 1544번 사이클 단어 사용 언어 - Python3 문제 - 사이클 단어 1544번: 사이클 단어 사이클 단어는 어떤 단어를 원형 모양으로 차례대로 쓴 것이다. 따라서, 어떤 단어를 이렇게 쓴 후에 임의의 단어를 고른다. 그 후에 시계방향으로 차례대로 읽으면 그 것이 단어가 된다. 만약에 www.acmicpc.net 정답 큐를 활용한 구현 (정답 맞춘 여부 X) 1. 각 word를 deque로 저장해준다. picture -> p,i,c,t,u,r,e 2. dq.append(dq.popleft()) dq의 맨 왼쪽 값 p를 없애면서 가장 오른쪽에 append한다. i,c,t,u,r,e,p의 형태 각 원소를 합한 save값이 원래 값인 picture까지 한바퀴를 다 돌면 break save값이 word 리스트 안 다른 원소들에 속.. 2023. 4. 19.
[Python3] 백준 1251번 단어 나누기 사용 언어 - Python3 문제 - 단어 나누기 1251번: 단어 나누기 알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다 www.acmicpc.net 정답 list 인덱싱 구현 (정답 맞춘 여부 X) word = list(input()) answer = [] tmp = [] for i in range(1,len(word)+1): for j in range(i+1,len(word)): a = word[:i] b = word[i:j] c = word[j:] a.reverse() b.reverse() c.reverse() tmp.append(a+b+c) for a i.. 2023. 4. 18.
[Python3] 백준 1283번 단축키 지정 사용 언어 - Python3 문제 - 단축키 지정 1283번: 단축키 지정 첫째 줄에 옵션의 개수 N(1 ≤ N ≤ 30)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄에 옵션을 나타내는 문자열이 입력되는데 하나의 옵션은 5개 이하의 단어로 표현되며, 각 단어 역시 10개 이하 www.acmicpc.net 정답 이중반복문 구현 (정답 맞춘 여부 X) import sys n = int(sys.stdin.readline()) arr = [] for _ in range(n): word = list(map(str, sys.stdin.readline().split())) for i in range(len(word)): if word[i][0].upper() not in arr: arr.append(word[i.. 2023. 4. 9.
[Python3] 1235번 학생 번호 사용 언어 - Python3 문제 - 학생 번호 1235번: 학생 번호 첫째 줄에는 학생의 수 N(2≤N≤1,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 학생의 학생 번호가 순서대로 주어진다. 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같으며, 0부 www.acmicpc.net 정답 이중반복문 구현 (정답 맞춘 여부 X) nums[0][-1] , nums[1][-1]을 비교해야하는 문제 answer = [] 빈 리스트에 num[j][-i:] append하기 answer 안에 해당 값이 있다면 break. 없을 때만 리스트에 append answer 안에 들어있는 원소가 n개가 되었다면 i를 출력하고 break n = int(input()) num = [] for _ in rang.. 2023. 4. 9.
[Python3] 1138번 한 줄로 서기 사용 언어 - Python3 문제 - 한 줄로 서기 1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 www.acmicpc.net 정답 이중반복문 구현 (정답 맞춘 여부 X) 각 자리마다 왼쪽에 있는 키 큰 사람수(cnt)는 총 4자리일때 0 1 2 3 이다. 왼쪽에 있는 키 큰 사람수 arr[i]가 cnt와 동일하고, 해당 자리가 비어있다면, answer[j] 그 자리에 i+1(자릿수가 1부터 시작하므로, 인덱스+1)을 앉힌다. 왼쪽에 있는 키 큰 사람수 arr[i]와 cnt가 동일하지 않고, 해당 자리가 비어있다면, cnt +=.. 2023. 4. 9.