문제 설명 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 입출력 첫 번째 입력의 1과 7로 얻을 수 있는 숫자의 조합은 [ 1, 7, 17, 71 ]이다. 이때, 소수는 7, 17, 71 총 3개이므로 3을 반환한다 두 번째 입력의 0과 1, 1로 얻을 수 있는 ..
10809. 알파벳 찾기 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 입력. 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 출력. 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다. 풀이. 알파벳의 개수만큼의 크기를 갖는 배열을 선언하고, 해당 알파벳이 있다면 index를 ..
제곱근의 이용 n의 약수는 무조건 1 ~ √n의 범위에 존재한다. ✔️ 소수인지를 확인할 숫자 n의 제곱근 √n을 기준으로 약수끼리의 곱은 대칭으로 이루어진다 ✔️ 그렇기 때문에 √n 이하의 작은 값까지만 검사를 하면 나머지는 검사를 할 필요가 없다 예를 들어 n = 18이라면, 18의 약수는 1, 2, 3, 6, 9, 18이다 이 때 n의 제곱근인 √18은 약 4.242이며, 이를 기준으로 약수의 순서를 보면 아래와 같다 (1 x 18) (2 x 9) (3 x 6) √18 = 4.242 (6 x 3) (9 x 2) (18 x 1) ✔️ 제곱근을 기준으로 좌우의 연산이 대칭되는 형상을 가진다 (예) (3 x 6) √18 (6 x 3) ✔️ 그렇기 때문에 제곱근과 같거나 작은 숫자로 나누어지면, 그 이후는..
에라토스테네스의 체(Sieve of Eratosthenes) 에라토스테네스의 체(Sieve of Eratosthenes)는 1~N까지의 범위 내 소수를 모두 구하기 위한 방법이다 범위내의 자연수를 걸러내어 소수를 구하는 방법으로, 에라토스테네스의 체 라는 이름이 붙여졌다 1부터 40까지의 수 중 소수를 구해보며 에라토스테네스의 체 방법에 대해 알아보자 먼저 1부터 40까지의 숫자를 위와 같이 나열한다 소수란 1과 자기 자신만을 약수로 갖는 수를 말한다. 1은 소수에 해당하지 않으므로 지운다 모든 수가 1의 배수이므로 1의 배수를 걸러내는 과정은 생략한다 순서대로 하나하나 확인해 나가면 되는데, 자기 자신을 제외한 배수를 모두 지운다. 2를 제외한 2의 배수를 모두 지운다 그다음 숫자인 3을 확인한다. 3..
문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 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, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작..
10808. 알파벳 개수 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각 알파벳이 단어에 몇 개가 포함되어 있는지 구하는 프로그램을 작성하시오. 입력. 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 출력. 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. 풀이. 알파벳의 개수만큼의 크기를 갖는 배열을 선언하고, 해당 알파벳이 있다면 +1 해준다 Python import sys word = sys.stdin.readline().rstrip() # 입력 받기 alpha = [0] * (ord('z') - ord('a') + 1) # 사용한 알파벳의 개수를 저장할 배열 + 0으로 초기화 # 단어의 알파벳을 ..
10866. 덱 정수를 저장하는 덱(Deque)를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여덟 가지이다. push_front X: 정수 X를 덱의 앞에 넣는다. push_back X: 정수 X를 덱의 뒤에 넣는다. pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 덱에 들어있는 정수의 개수를 출력한다. empty: 덱이 비어있으면 1을, 아니면 0을 출력한다. front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 ..
1158. 요세푸스 문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다. N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오. 입력. 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) 출력. 예제와 같이 요세푸스 순열을 출력한다. Python import sys n, k..
💬 문제 설명 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 💡제한사항 prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. prices의 길이는 2 이상 100,000 이하입니다. ✏️ 입출력 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다. 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다. 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다. 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다. 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다. 🔑Python def solution(prices): ..
💬 문제 설명 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 따라서, 모든 트럭이 다리를 지나려면 최소 8초가 걸립니다. solution 함수의 매개변수로 다리에 올라갈 수 있는 트럭 수 bridge_length, 다리가 견딜 수..