no image
[백준][Bronze I] ROT13 - 11655 Python
https://www.acmicpc.net/problem/11655 문제 설명ROT13은 카이사르 암호의 일종으로 영어 알파벳을 13글자씩 밀어서 만든다.예를 들어, "Baekjoon Online Judge"를 ROT13으로 암호화하면 "Onrxwbba Bayvar Whqtr"가 된다. ROT13으로 암호화한 내용을 원래 내용으로 바꾸려면 암호화한 문자열을 다시 ROT13하면 된다. 앞에서 암호화한 문자열 "Onrxwbba Bayvar Whqtr"에 다시 ROT13을 적용하면 "Baekjoon Online Judge"가 된다.ROT13은 알파벳 대문자와 소문자에만 적용할 수 있다. 알파벳이 아닌 글자는 원래 글자 그대로 남아 있어야 한다. 예를 들어, "One is 1"을 ROT13으로 암호화하면 "Ba..
2025.01.31
no image
[백준] [Silver V] 카드1 - 2161 Python
https://www.acmicpc.net/problem/2161 문제 설명N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다.이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다.예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리면 234가 남는다. 여기서 2를 제일 아래로 옮기면 342가 된다. 3을 버리면 42가 되고, 4를 밑으로 옮기면 24가 된다. 마지막으로 2를 버리고 나면, 버린 카드들은 순서대로..
2025.01.30
no image
[백준] [Silver I] 회의실 배정 - 1931 Python
https://www.acmicpc.net/problem/1931       import sysn = int(input()) # 회의의 수meetings = [tuple(map(int, sys.stdin.readline().split())) for _ in range(n)]# 종료 시간을 오름차순으로 정렬하고, 종료 시간이 같으면 시작 시간을 오름차순 정렬meetings.sort(key=lambda x: (x[1], x[0]))current_time = 0 # 회의가 끝난 시간max_meetings = 0 # 최대 회의 수for start, end in meetings: if current_time
2025.01.29
no image
[백준] [Silver I] 신입 사원 - 1946 Python
https://www.acmicpc.net/problem/1946       import sysinput = sys.stdin.readlineT = int(input())for tc in range(T): N = int(input()) freshman = [list(map(int, input().split())) + [i + 1] for i in range(N)] freshman.sort(key=lambda x: x[0]) rank = freshman[0][1] # 첫 비교대상 면접점수를 저장 cnt = 1 # 개수를 1로 초기화 for i in range(1, N): if rank > freshman[i][1]: # 만약 지금 저장된 순위보다 더 작은 ..
2025.01.28
no image
[백준] [Silver V] 덩치 - 7568 Python
https://www.acmicpc.net/problem/7568 문제 설명우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x, y), (p, q)라고 할 때 x > p 그리고 y > q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56, 177), (45, 165) 라고 한다면 A의 덩치가 B보다 큰 셈이 된다. 그런데 서로 다른 덩치끼리 크기를 정할 수 없는 경우도 있다. 예를 들어 두 사람 C와 D의 덩치가 각각 (45, 181), (55, 173)이라면 몸..
2025.01.27
no image
[백준] [Silver IV] 설탕 배달 - 2839 Python
https://www.acmicpc.net/problem/2839 문제 설명상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000)출..
2025.01.24
no image
[백준] [Silver I] 개미 - 4307 Python
https://www.acmicpc.net/problem/4307  문제 설명개미 여러 마리가 길이가 lcm인 막대 위에 있다. 각 개미의 이동 속도는 모두 일정하며, 1cm/s이다. 개미가 막대의 마지막까지 걸어간다면, 개미는 그 즉시 떨어지게 된다. 또, 두 개미가 만나게 된다면, 방향을 반대로 바꾸어 걸어가게 된다.가장 처음에 막대 상에서 개미의 위치를 알고 있다. 하지만, 개미가 어느 방향으로 움직이는 지는 알 수가 없다. 이때, 모든 개미가 땅으로 떨어질 때까지 가능한 시간 중 가장 빠른 시간과 느린 시간을 구하는 프로그램을 작성하시오.입력첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스의 첫째 줄에는 막대의 길이와 개미의 수 n이 주어진다. 다음 n개 줄에는 숫자가 하나씩 주어지며..
2025.01.23
no image
[백준] [Silver V] 점수 계산 - 2822 Python
https://www.acmicpc.net/problem/2822 문제 설명상근이는 퀴즈쇼의 PD이다. 이 퀴즈쇼의 참가자는 총 8개 문제를 푼다. 참가자는 각 문제를 풀고, 그 문제를 풀었을 때 얻는 점수는 문제를 풀기 시작한 시간부터 경과한 시간과 난이도로 결정한다. 문제를 풀지 못한 경우에는 0점을 받는다. 참가자의 총 점수는 가장 높은 점수 5개의 합이다.상근이는 잠시 여자친구와 전화 통화를 하느라 참가자의 점수를 계산하지 않고 있었다. 참가자의 8개 문제 점수가 주어졌을 때, 총 점수를 구하는 프로그램을 작성하시오.입력8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로..
2025.01.23
no image
[백준] [Silver III] 영단어 암기는 괴로워 - 20920 Python
https://www.acmicpc.net/problem/20920       import sysfrom collections import Counterinput = sys.stdin.readdata = input().splitlines()N, M = map(int, data[0].split())words = data[1:]# 길이 M 이상 단어 필터링 및 빈도 계산filtered_words = [word for word in words if len(word) >= M]word_count = Counter(filtered_words)# 정렬sorted_words = sorted(word_count.items(), key=lambda x: (-x[1], -len(x[0]), x[0]))sys.stdout...
2025.01.21