SWLUG(2025)/Algorithm 21

[2학기 7주차] 다음 소수, 수열

문제정수 n(0 ≤ n ≤ 4*109)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오.입력첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다.import mathimport sysinput = sys.stdin.readline T = int(input())for _ in range(T): n = int(input()) p = max(2, n) while True: is_p = True if p % 2 == 0 and p > 2: is_p = False else: limit = int(ma..

[2학기 6주차] 너의 이름은 몇 점이니?, 히든 넘버

문제소윤이는 성필이에게 단단히 화가 났다. 성필이가 자꾸 소윤이의 이름을 놀리는 것이다!극대노한 소윤이는 이름에 대해 많은 검색을 하던 도중 "이름점수"라는 것을 발견하게 된다. 이름 점수란, 알파벳 하나하나에 점수가 있고 이름에 들어가는 모든 알파벳 점수를 합한 것이라고 한다. 예를 들어 이름이 SUNG PIL 이라면,A = 1점B = 2점C = 3점...Z = 26점인 점수판에 따라 S(19)+U(21) + N(14) + G(7) + P(16) + I(9) + L(12) = 98점이다. (즉, 점수는 알파벳 순서이다) 소윤이는 SO YOON이므로 S(19) + O(15) + Y(25) + O(15) + O(15) + N(14) = 103점으로 성필이보다 "이름점수"가 높았다! 그 사실을 알아챈 소윤이..

[2학기 5주차] 이상한 곱셈, Shares

문제A×B를 계산하다 지겨워진 형택이는 A×B를 새로운 방법으로 정의하려고 한다.A에서 한 자리를 뽑고 × B에서 임의로 한 자리를 뽑아 곱한다.의 가능한 모든 조합 (A가 n자리, B가 m자리 수라면 총 가능한 조합은 n×m개)을 더한 수로 정의하려고 한다.예를 들어 121×34는1×3 + 1×4 + 2×3 + 2×4 + 1×3 + 1×4 = 28이 된다. 이러한 형택이의 곱셈 결과를 구하는 프로그램을 작성하시오.입력첫째 줄에 A와 B가 주어진다. 주어지는 두 수는 모두 10,000자리를 넘지 않는 음이 아닌 정수이다. 수가 0인 경우에는 0만 주어지며, 그 외의 경우 수는 0으로 시작하지 않는다. if) 123 54가 주어지는 경우result = 1 * 5 + 2 * 5 + 3 * 5 + 1 * 4 ..

[2학기 4주차] 평균은 넘겠지, 최솟값 찾기

문제대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.입력첫째 줄에는 테스트 케이스의 개수 C가 주어진다.둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.출력각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다. 정답과 출력값의 절대/상대 오차는 10-3이하이면 정답이다.C = int(input())for _ in range(C): data = list(map(int, input().split())) N = data[0] scores = d..

[2학기 3주차] 수 정렬하기 3, 수열

문제N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.입력첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. import syscount_list = [0] * 10001N = int(sys.stdin.readline())for _ in range(N): num = int(sys.stdin.readline()) count_list[num] += 1for i in range(10001): if count_list[i] > 0: for _ in range(count_list[i]): sys.stdout.write(str(i..

[2학기 2주차] 숫자의 합, 바구니 뒤집기

문제N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.입력첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.N = int(input())numbers = input()total_sum = 0for digit in numbers: total_sum += int(digit)print(total_sum) 1. 숫자의 개수를 입력받는다.2. 공백없는 N개의 숫자를 입력받는다.3. 숫자들의 합을 저장할 변수를 초기화한다.4. digit은 반복문이 한번 실행 될 때마다 numbers문자열에서 하나의 문자를 임시로 담는 역할을 하는 변수이다. 문자열의 각 문자를 정수형으로 변환하여 total_sum에 더한다.5. 최종..

[2학기 1주차] 새싹, 공 넣기

문제아래 예제와 같이 새싹을 출력하시오.입력입력은 없다.출력새싹을 출력한다.예제 입력 1 예제 출력 1 ,r'"7r`-_ ,' ,/ \. ". L_r' `~\/ | |print(" ,r'\"7")print("r`-_ ,' ,/")print(" \\. \". L_r'")print(" `~\\/")print(" |")print(" |") 특수문자인 "와 \를 출력하기 위해 이스케이프 시퀀스를 사용하여 다음과 같이 새싹을 출력할 수 있도록 한다. +) 이스케이프 시퀀스 : 프로그래밍 언어에게 "이 다음 문자는 평소와 다르게 특별하게 처리해줘!"라고 알려주는 약속 \뒤에 특정문자를 붙여서 사용 ex. \": 큰..

[SV 8주차] 문자 인식, 전화번호 목록, 시간 관리하기

문제동혁이는 새로운 이미지 문자 인식 프로그램을 만들었다. 이 프로그램은 종이에 쓰여 있는 글자를 스캔한 뒤, 텍스트 파일로 저장한다. 동혁이는 밤을 새며 열심히 프로그램을 만들었지만, 프로그램의 신뢰도는 100%가 아니며, 어떤 글자는 인식하지 못했다. 결국 동혁이는 100%가 아니라는 점에서 실망하였고, 대전으로 도망가게 되었다.대전으로 도망가버린 동혁이를 대신해서, 동혁이가 만든 이미지 문자 인식 프로그램의 인식률을 계산하는 프로그램을 작성하시오.인식률은 인식한 문자의 수를 R, 전체 문자의 수를 A라고 했을 때, R/A이다. 줄바꿈 문자는 문자로 세지 않는다.입력입력은 N개의 테스트 케이스로 구성되어 있다. 첫째 줄에 테스트 케이스의 개수 N이 주어진다. 각 테스트 케이스는 적어도 한 줄이고, 인..

[SV 7주차] 단어 수학, 줄세우기, N-퍼즐

문제민식이는 수학학원에서 단어 수학 문제를 푸는 숙제를 받았다.단어 수학 문제는 N개의 단어로 이루어져 있으며, 각 단어는 알파벳 대문자로만 이루어져 있다. 이때, 각 알파벳 대문자를 0부터 9까지의 숫자 중 하나로 바꿔서 N개의 수를 합하는 문제이다. 같은 알파벳은 같은 숫자로 바꿔야 하며, 두 개 이상의 알파벳이 같은 숫자로 바뀌어지면 안 된다.예를 들어, GCF + ACDEB를 계산한다고 할 때, A = 9, B = 4, C = 8, D = 6, E = 5, F = 3, G = 7로 결정한다면, 두 수의 합은 99437이 되어서 최대가 될 것이다.N개의 단어가 주어졌을 때, 그 수의 합을 최대로 만드는 프로그램을 작성하시오.입력첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터..

[SV 6주차] 새, 초콜릿 자르기, 직사각형에서 탈출

문제N마리의 새가 나무에 앉아있고, 자연수를 배우기 원한다. 새들은 1부터 모든 자연수를 오름차순으로 노래한다. 어떤 숫자 K를 노래할 때, K마리의 새가 나무에서 하늘을 향해 날아간다. 만약, 현재 나무에 앉아있는 새의 수가 지금 불러야 하는 수 보다 작을 때는, 1부터 게임을 다시 시작한다.나무에 앉아 있는 새의 수 N이 주어질 때, 하나의 수를 노래하는데 1초가 걸린다고 하면, 모든 새가 날아가기까지 총 몇 초가 걸리는지 출력하는 프로그램을 작성하시오. 입력첫째 줄에 새의 수 N이 주어진다. 이 값은 10^9보다 작거나 같은 자연수이다. N = int(input())K = 1time = 0while N > 0: if N >= K: N -= K K += 1 ..