목록Computer Science/Algorithm (244)
DHistory
문제 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..
문제 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 풀이 n = int(input()) def solution(n): answer = 0 for i in range(1, n + 1): if n < (i * i + i) // 2: break answer = i return answer print(solution(n)) 채점 결과
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 def solution(ingredient): answer = 0 queue = [] for element in ingredient: queue.append(element) if queue[-4:] == [1, 2, 3, 1]: answer += 1 for _ in range(4): queue.pop() return answer 채점 결과
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 """ 1. 조합 발음은 가능 2. 연속 발음 불가능 가능한 발음을 숫자로 변경 숫자만 되어있는 경우 발음 가능 단, 연속 숫자인 경우 발음 불가 문자가 포함되어 있는 경우 발음 불가 """ def solution(babbling): answer = 0 dictionary = ['aya', 'ye', 'woo', 'ma'] for word in babbling: for index, value in enumerate(dictionary): word = word.replace(value, str(ind..