목록분류 전체보기 (271)
DHistory
문제 6550번: 부분 문자열 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문자열 s 와 t가 빈칸을 사이에 두고 들어온다. s와 t의 길이는 10만을 넘지 않는다. www.acmicpc.net 풀이 UCPC와 동일한 문제 """ 문자열 s와 t s가 t의 부분 문자열인지 판단 부분문자열: t에서 몇 개의 문자를 제거하고 이를 순서를 바꾸지 않고 합쳤을 경우 s가 되는 경우 """ import sys def solution(s, t): index = 0 for alpha in t: if s[index] == alpha: index += 1 if index == len(s): return 'Yes' return 'No' for line in sys.std..
문제 3135번: 라디오 첫 줄엔 정수 A와 B가 주어진다 (1 ≤ A, B B로 갈 때 눌러야 하는 가장 적은 버튼 수 === example === Input 100 15 => A, B 1 => N 15 => 즐겨찾기 주파수 채널 Output 15 주파수 단위는 신경쓰지 않아도 됨. """ a, b = map(int, input().split()) n = int(input()) boo..
문제 9237번: 이장님 초대 입력은 두 줄로 이루어져 있다. 첫째 줄에는 묘목의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄에는 각 나무가 다 자라는데 며칠이 걸리는지를 나타낸 ti가 주어진다. (1 ≤ ti ≤ 1,000,000) www.acmicpc.net 풀이 """ n: 나무 묘목 하나를 심는데 걸리는 시간: 1일 Q: 각 묘목이 자라는데 며칠이 걸릴까? A: 마지막 나무가 자란 날 (가장 작은 값, 처음값: 1일 -> O일?) N: 묘목의 수 ti: 묘목이 자라는데 며칠이 걸리는 지 묘목이 자라는데 필요한 일 수: 4 3 3 2 각 묘목이 자라는데 필요한 일 수: 5 5 6 6 """ n = int(input()) seeds = list(map(int, input().split..
문제 2828번: 사과 담기 게임 상근이는 오락실에서 바구니를 옮기는 오래된 게임을 한다. 스크린은 N칸으로 나누어져 있다. 스크린의 아래쪽에는 M칸을 차지하는 바구니가 있다. (M
문제 1417번: 국회의원 선거 첫째 줄에 후보의 수 N이 주어진다. 둘째 줄부터 차례대로 기호 1번을 찍으려고 하는 사람의 수, 기호 2번을 찍으려고 하는 수, 이렇게 총 N개의 줄에 걸쳐 입력이 들어온다. N은 50보다 작거나 같 www.acmicpc.net 풀이 """ 국회의원 후보: N 마을의 주민: M 다솜이 기호 1번 1번이 아닌 경우 돈으로 매수하여 1번을 찍도록 진행 매수해야하는 사람의 최솟값 """ n = int(input()) votes = [int(input()) for _ in range(n)] def solution(votes): answer = 0 dasom = votes[0] candidate = votes[1:] or [0] while dasom
문제 15904번: UCPC는 무엇의 약자일까? 첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는 www.acmicpc.net 풀이 text = input() def solution(text): ucpc = 'UCPC' index = 0 for alpha in text: if ucpc[index] == alpha: index += 1 if index == 4: break return 'I love UCPC' if index == 4 else 'I hate UCPC' print(solution(text)) # input: CCCCCUCPC # output: I ..
문제 16435번: 스네이크버드 첫 번째 줄에 과일의 개수 N (1 ≤ N ≤ 1,000) 과 스네이크버드의 초기 길이 정수 L (1 ≤ L ≤ 10,000) 이 주어집니다. 두 번째 줄에는 정수 h1, h2, ..., hN (1 ≤ hi ≤ 10,000) 이 주어집니다. www.acmicpc.net 풀이 n, l = map(int, input().split()) heights = list(map(int, input().split()))[:n] def solution(l, heights): heights.sort() for height in heights: if l >= height: l += 1 return l print(solution(l, heights)) 채점 결과
문제 1343번: 폴리오미노 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. www.acmicpc.net 풀이 """ AAAA와 BB 사용 가능 .와 X로 이루어진 보드판 X를 모두 AAAA / BB로 덮으려고 함 (단, .은 덮으면 안됨) 사전순으로 가장 앞서는 답 출력 주의) 덮을 수 없으면 -1 출력 """ board = input() def solution(board): board = board.split('.') result = [] for element in board: count_x = element.count('X') if count_x % 2 != 0: return -1 else: a = count_x // 4 b = count_x % 4 resu..
문제 14916번: 거스름돈 첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다. www.acmicpc.net 풀이 """ 거스름 돈 동전의 최소 개수 거슬러 줄 수 없는 경우 -1 """ n = int(input()) def solution(n): five_coin = 0 two_coin = 0 while n > 0: if not n % 5: five_coin = n // 5 break n -= 2 two_coin += 1 if n < 0: return -1 return two_coin + five_coin print(solution(n)) 채점 결과
문제 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 풀이 """ 주의) 해당 주석이 있는 경우 오답 (23/08/11 기준) 문자열의 모든 숫자를 전부 같게 해야함. 문자열을 뒤집을 최소 횟수를 구하시오. 0/1 뒤집기 중 둘 중 더 작은 숫자 개수 """ s = input() def solution(s): queue = [] for i in s: if queue[-1:] != [i]: queue.append(i) return min(queue.count('0'), queue.count('1')) print..