https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 해설 : M이상 N이하의 소수를 모두 출력하는 문제이다. 풀이 : M부터 N까지의 모든 수를 소수인지 체크한다. 이 때, 소수판별함수에서 숫자가 X라면 X의 제곱근까지만 검사하면 된다. 소스코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import sys input = sys.stdin.readline if __name__ == "__main__": N,M = ma..
https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 해설 : 알파벳 대문자들로만 이루어진 문자열 N개가 주어진다. 각 알파벳 대문자를 0~9의 숫자로 치환하여 더하였을 때 그 결괏값이 최대가 되는 경우를 구하는 문제이다. 풀이 : 문자열에 존재하는 알파벳별 가중치를 계산하기 위한 배열을 만들고, 이 배열에 문자열에 있는 문자들마다의 가중치를 더해준다 예를 들어 , ABC라는 문자열이 있다면 배열[A]의 가중치는 100이고 배열[B]는 10 배..
https://www.acmicpc.net/problem/1242 1242번: 소풍 동호와 동호네 반 친구들은 산정호수로 소풍을 갔다. 총 N명이 소풍에 참가했고, KIN 게임을 하려고 한다. 이 게임은 다음과 같이 진행된다. 무대에 올라간 N명은 1번부터 N번까지 시계방향으로 원 www.acmicpc.net 해설 : 요세푸스 순열(https://recordofwonseok.tistory.com/96)과 똑같은 문제인데 내가 몇 번째로 탈락하는지만 추가적으로 찾으면 되는 문제이다. 풀이 : 옛날에 풀었던 문제라 기억이 잘 안난다. 소스를 참고로 해석해보자면 n은 퇴장당한 사람의 수이다. 매 퇴장당하는 경우마다 mod값을 이용하여 다음 퇴장당할 사람을 계산하는 방식인 것 같다. 소스코드 : 1 2 3 4 ..
https://www.acmicpc.net/problem/1105 1105번: 팔 첫째 줄에 L과 R이 주어진다. L은 2,000,000,000보다 작거나 같은 자연수이고, R은 L보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 해설 : 자연수 L과 R이 주어질 때 L보다 크거나 같고 R보다 작은 자연수들 중 8이 가장 적게 들어있는 경우의 8의 개수를 찾는 문제이다. 풀이 : L의 자릿수만큼 for문을 반복하여 L과 R의 자릿수를 각각 비교한다. 이 때, 자릿수가 다르다면 그 때까지 8의 개수를 센 값을 출력하고 아니라면 L 과 R의 자릿수가 모두 8인지 확인한다. 이는 L이나 R의 자릿수가 둘 다 8이 아니면 다른 수를 넣어 8이 아니게 만들 수 ..
https://www.acmicpc.net/problem/1041 1041번: 주사위 첫째 줄에 N이 주어진다. 둘째 줄에 주사위에 쓰여 있는 수가 주어진다. 위의 그림에서 A, B, C, D, E, F에 쓰여 있는 수가 차례대로 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, 쓰여 있는 수 www.acmicpc.net 해설 : +---+ | D | +---+---+---+---+ | E | A | B | F | +---+---+---+---+ | C | +---+ 전개도가 다음과 같은 주사위의 A부터 F까지의 수가 주어지고 이를 N x N x N 개 쌓아서 정육면체를 만든다고 할 때, 바깥에 드러나는 5개의 면들에 있는 숫자들의 합의 최솟값을 찾는 문제이다. 풀이 : 수학에 많이 약한 내..
https://programmers.co.kr/learn/courses/30/lessons/12953 코딩테스트 연습 - N개의 최소공배수 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배 programmers.co.kr 해설 : n개의 숫자가 주어질 때, 모든 숫자의 최소공배수를 구하는 문제이다. 풀이 : 수들 중 가장 큰 수 a부터 모든 수를 곱한 값 l까지 1씩 더해가며 모든 수에 대해 나머지를 확인하며 최소공배수가 되는 값을 찾도록 구현하였다. 1234567891011def solution(arr): l = 1 for i in a..
https://programmers.co.kr/learn/courses/30/lessons/12936 코딩테스트 연습 - 줄 서는 방법 n명의 사람이 일렬로 줄을 서고 있습니다. n명의 사람들에게는 각각 1번부터 n번까지 번호가 매겨져 있습니다. n명이 사람을 줄을 서는 방법은 여러가지 방법이 있습니다. 예를 들어서 3명의 사람 programmers.co.kr 해설 : 1번부터 n번, 총 n명의 사람이 줄을 서는 모든 경우를 사전순으로 정렬한 후 k번째 줄 서는 방법을 찾는 문제이다. 풀이 : 처음엔 permutations을 이용하여 실제로 줄 서는 모든 방법을 찾으려고 하였으나 n의 범위가 20이므로 메모리, 시간 효율성에서 모두 통과하지 못했다. 따라서 다른 방법을 생각하였는데 이는 수학적 특징을 이..
https://programmers.co.kr/learn/courses/30/lessons/82612 코딩테스트 연습 - 부족한 금액 계산하기 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이 programmers.co.kr 해설 : 현재 내가 갖고 있는 돈 money와 놀이기구의 요금 price, 놀이기구 이용횟수 count가 주어질 때 놀이기구를 count번 이용하면 돈이 얼마 모자라는지 리턴하면 된다. 단, 놀이기구는 이용 횟수만큼 가격이 곱해진다. 풀이 : 놀이기구를 1번 이용한다면 가격은 1 x price이고 2번 이용한다면 (1 x price) +..
https://programmers.co.kr/learn/courses/30/lessons/87389 코딩테스트 연습 - 나머지가 1이 되는 수 찾기 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 제한사항 입 programmers.co.kr 해설 : 자연수 n이 주어질 때, n을 x로 나누어서 나머지가 1이 되게 하는 가장 작은 수 x를 찾으면 된다. 풀이 : while문을 사용하여 1부터 n을 나누었을때 나머지가 1이 되는 수를 찾고 이를 리턴한다. 123456def solution(n): i = 1 while True: if n % i == 1: r..