문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 문제 설명 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한 사항 numbers는 길이..
알고리즘
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3..
문제 링크 https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 문제 문제 풀이 경우의 수가 많지 않기 때문에 완전 탐색 알고리즘, 즉 브루트 포스 알고리즘으로 해결하는 문제이다. 브루트 포스는 예를 들어 1부터 100까지 중 숫자를 찾을 때 하나씩 더해가며 숫자를 찾아내는 방식을 일컫는다. 이 문제에서는 1년에서 시작하게 되므로, e, s, m를 각각 1, 1, 1로 두고 여기서부터 1씩 늘려가며 (이 때, 결과로 나오는 연도도 1씩 늘려준다) 입력받은..
문제 링크 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제 문제 풀이 최선으로 가장 적은 시간을 구해내기 위해서는 무조건 인출 시간이 짧은 사람이 먼저 와야 한다. 정렬을 통해 인출 시간이 짧은 순으로 나열하고 모든 인출시간을 더해준다. n = int(input()) arr = list(map(int, input().split())) arr.sort() result = 0 sum = 0 for i in arr: result += i sum += result print(..
문제 링크 https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 문제 문제 풀이 * 30의 배수의 조건 * 1) 각 자리수 값을 더했을 때 3의 배수가 되어야 한다 2) 일의 자리 수는 0이 되어야 한다 n = list(input()) n.sort(reverse=True) sum = 0 for i in n: sum += int(i) if sum % 3 != 0 or "0" not in n: print(-1) else: print(''.join(n))
문제 링크 https://www.acmicpc.net/problem/2875 2875번: 대회 or 인턴 첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N), www.acmicpc.net 문제 문제 풀이 while을 이용한 조건문을 이용한 풀이이다. 여학생 2명, 남학생 1명으로 팀이 꾸려지고, 여학생과 남학생을 합친 수는 팀을 꾸릴 수 있는 3명에 인턴십 인원 K까지 포함되어야 한다. 이 조건까지 while문을 돌려 팀 수를 도출한다. N, M, K = map(int, input().split()) result = 0 while N >= 2 and M >= 1 and N + M >= K + 3: N -= 2 M -= 1 result +=..
문제 링크 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 문제 문제 풀이 남은 금액에 대해 나눌 수 있는 가장 큰 금액을 더해나가는 간단한 풀이이다. n, k = map(int, input().split()) m = [] num = 0 for i in range(n): m.append(int(input())) for i in range(n - 1, -1, -1): if k == ..
문제 링크 https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net 문제 문제 풀이 import sys N, M = map(int, sys.stdin.readline().split()) a = list(map(int, sys.stdin.readline().split())) b = list(map(int, sys.stdin.readline().split())) result = a + b print(' '.join(map..