코딩테스트

하루 코테 1개 풀기 - 2일차

songsua 2025. 3. 12. 00:21

물품 개수 N개을 받고 둘째 줄부터 N개의 줄에 걸쳐 i번째 줄에 S,P 가 공백을 두고 주어진다
가장 비싼 물품과 가장 저렴한 물품을 출력받는다.

입력 :

5
watch 2000
scarf 1500
boots 4000
coat 10000
perfume 7000

 

출력

coat 10000
scarf 1500



내가한 답

n = int(input())
items = []

for _ in range(n):
    name, price = input().split()
    price = int(price)
    items.append((name, price))

# 가장 비싼 물품 찾기
most_expensive = max(items, key=lambda x: x[1])
# 가장 저렴한 물품 찾기
cheapest = min(items, key=lambda x: x[1])

print(most_expensive[0], most_expensive[1])
print(cheapest[0], cheapest[1])

 

 

 

벌목문제

도착한 숲에는 원형 모양으로 나무 그루가 자라나고 있었다. 
즉 1번째 나무 오른쪽엔 2번째 나무, 3번째 나무 오른쪽엔 4번째 나무, , 5번째 나무 
오른쪽엔 N번째 나무가 있다. 이제 구름이는 벌목을 할 것인데, 높이가  M이상인 나무만 벌목을 할 수 있다는 규칙을 꼭 지켜야 한다. 벌목 과정은 다음과 같으며, 구름이는 아래와 같은 벌목 과정을 총 회 반복할 것이다. 구름이의 현재 위치는 번째 나무가 있는 곳이다.

x번째 나무의 높이가  M이상이면 벌목을 한다. 
벌목을 하게 되면 구름이가 소지한 목재량은 x번째 나무의 높이만큼 증가하며, 
x번째 나무의 높이는 0이 된다.
구름이는 다음과 같은 방법 중 하나를 선택해 움직일 것이다.
L : x-1번째 나무가 있는 곳으로 이동한다. 이라면 번째 나무가 있는 곳으로 이동한다.
R : x+1번째 나무가 있는 곳으로 이동한다. 이라면 번째 나무가 있는 곳으로 이동한다.
S : x번째 나무가 있는 곳에 머무른다.
모든 나무들은 높이 1씩 자란다. 높이 0인 나무도 뿌리는 남아있기 때문에 마찬가지로 높이 씩 자란다.
구름이가 벌목 과정을 Q회 반복한 뒤, 구름이가 소지한 목재량을 알아보자.
N = 나무 그루 수
M = 벌목 높이 제한
x = 화자가 위치한 나무 순서
N, M , x

입력
4 3 1
2 0 1 5
5
S R R L L

출력
11

 

n, m, x = map(int, input().split())  # n: 나무 개수, k: 목표높이, x: 시작 위치
tree = list(map(int, input().split()))  # 각 나무의 높이
q = int(input())  # 명령 개수
command = input().split()   # 벌목 명령 리스트


#q번 수행할 것이다
total_wood = 0
position = x - 1   #인덱스때문에 0부터 시작하닌깐

for i in range(q) :
	if tree[position] + i >= m  : 
		total_wood += tree[position] + i
		tree[position] -= tree[position]+ i
	
	#움직이기
	if command[i] == 'L':
		position = (position - 1) % n
		
	elif command[i] == 'R' :
		position = (position + 1) % n

		
print(total_wood)

 

 

여기서 포인트

#움직이기
	
	if command[i] == 'L':
		position = (position - 1) % n
		
	elif command[i] == 'R' :
		position = (position + 1) % n

 

원형이기 때문에 position 을 %n 으로 나눠주면서 값을 가져가야 한다.