Hoin's security

[7주차] 알고리즘 Baekjoon 2476번, 22966번 문제 파이썬 활용 본문

Algorithm/Baekjoon

[7주차] 알고리즘 Baekjoon 2476번, 22966번 문제 파이썬 활용

Hoin.s 2023. 5. 23. 23:54

오늘은 백준 2476번, 22966번 문제풀이를 진행해본다.

2476번 문제.
2476번 예제.

for문에서 범위를 설정해서 코드를 짜면 될 거 같다.

N=int(input())
big=0 #바로 비교하는 코드를 짜면 0으로 초기값을 설정해주기.
for i in range(N):
    a,b,c=map(int,input().split())
    if a==b==c:
        big=max(big, 10000+a*1000)
    elif a==b:
        big=max(big, 1000+a*100)
    elif b==c:
        big=max(big, 1000+a*100)
    elif c==a:
        big=max(big, 1000+a*100)
    else:
        big=max(big,max(a,b,c)*100)
print(big)

이번 코드에서 주의깊게 볼 부분은 max() 함수인 것 같다.

c=max(a,b)형식이면 a와 b를 비교하여 더 큰 수를 c에 저장한다.

예제대로 입력했을 때 출력이 잘 되므로 제출한다.

어... 뭐가 잘못되었을까..

구글링을 한다.

n = int(input())
maxMoney = 0
for i in range(n):
    a,b,c = map(int, input().split())
    if a == b == c :
        maxMoney = max(maxMoney, 10000+a*1000)
    elif a == b:
        maxMoney = max(maxMoney, 1000+a*100)
    elif a == c:
        maxMoney = max(maxMoney, 1000+a*100)
    elif b == c:
        maxMoney = max(maxMoney, 1000+b*100)
    else :
        maxMoney = max(maxMoney, max(a,b,c)*100)
       
print(maxMoney)

내 코드와 차이점이 무엇인지 알아본다.

내 코드에서는 elif에서 a==b -> b==c -> c==a순으로 비교했고 맞는 코드에서는 a==b -> a==c -> b==c순으로 비교하였는데 이 차이가 결과에 어떤 영향을 주는지 모르겠다.

(+추후에 이유를 알아내 달아두겠다.)

 

22966번 풀이

22966번 문제.
22966번 예제.

N=int(input())
title=[]
difficulty=[]
for i in range(N):
    t,d=input().split()
    title.append(t)
    difficulty.append(d)

for i in range(len(difficulty)):
    if difficulty[i]==min(difficulty):
        print(title[i])

딕셔너리를 쓸지 고민했는데 for 문으로 될거같아서 두개의 리스트를 만들어서 난이도 부분인 difficulty 리스트에서 최솟값을 찾아 그에 해당하는 순서의 제목을 출력하도록 해봤다.

예제가 잘 출력되는지 확인하고 제출한다. 아까같이 틀리질 않길 바란다.

다행히도 맞았다고 결과가 뜬다. 오늘도 알찼다!