이숨인 2023. 4. 24. 18:22

1. 문제

2. 내 풀이 + 알고리즘

N = int(input())
max_prize=0
for i in range(N):
    value= list(map(int,input().split()))
    value.sort()
    if (value[0]==value[2]): #같은 눈이 3개인 경우
        prize= 10000+ value[0]*1000
        
    elif(value[0]== value[1] or value[1] == value[2]): #같은 눈이 두 개인 경우
            prize=1000+ value[1]*100
     
    else: #모두 다른 눈인 경우
        prize=value[2]*100
    if (max_prize < prize):
        max_prize = prize

print(max_prize)

 

3. 인프런 강의

n=int(input())
res=0
for i in range(n):
    tmp=input().split() #tmp에, 그대로 '문자화된' 리스트가 들어간다. 
    tmp.sort() # 오름차순 정렬
    a,b,c = map(int,tmp) #리스트에 있는 문자가 숫자화되어서, a,b,c에 일대일 대응 된다
   #if문을 쓸 때 -> 가장 좋은 것을 if문으로 해야함!

    if a==b and b==c: #세 개 모두 같을 경우
       money=10000+a*1000
    elif a==b or b==c: 
        money=1000+(b*100)
    else: #세 개가 같을 경우
        money=c*100

    if money>res:
        res=money
print(res)

 

 

4. 잘한 점

- max를 기준으로, 계속해서 최대 금액을 초기화하는 기본적인 알고리즘을 잘 써먹었다.

-sort함수를 적용할 생각을 스스로 하였다

5. 반성할 점

- 조건문 if/else등을 사용하는 것에 있어서, 조건의 내용을 더욱 간소화시킬 수 있었음에도 복잡하게 조건을 적었다.

예를 들어, 위에 나의 답이 수정되기 전에는

N = int(input())
max_prize=0
for i in range(N):
    value= list(map(int,input().split()))
    value.sort()
    if (value[0]==value[1] and value[1]==value[2] and value[0] == value[2] ):
        prize= 10000+ value[0]*1000
    else:
        
        if(value[0] != value[1] and value[1] != value[2] and value[0] != value[2]):
            prize=value[0]*100
        elif(value[0]==value[1]):
            prize=1000 + value[0]*100
        else:
            prize=value[1]*100
    if (max_prize < prize):
        max_prize = prize

print(max_prize)

위와 같이 코드를 작성하였는데, 저렇게 모든 조건을 다 탐색하지 않아도, 

sort를 적용한 후이니, 가장 큰 값 value[0]과 가장 작은 값 value[1]을 기준으로, 

같은 값이 3개일 때 ->  2개일 때 -> 0개일 때 를 더욱 간소화하여 판단할 수 있었을 것이다.

 

6. 새로 알게 된 내용

 

입력은, 위 문제에서 입력한대로 별도 txt에 저장해놓은 상태

  • tmp = input().split() 을 하면, 입력한 값이 리스트화 되어서 출력되는데, 각각의 원소들은 '문자'이다.

출력결과는 위와 같다.

 

 

  • 매핑
    • 리스트에 있는 문자가 숫자화되어서, a,b,c에 일대일 대응 된다
    •  

 

출력 결과

  • if / elif / else .. 문을 쓸 때는, 가장 좋은 조건을 if문에 넣는다!
    • 즉, 이 문제에서는 가장 큰 금액을 얻을 수 있는 a=b=c를 if문에 넣는다
    •