https://www.acmicpc.net/problem/2480
(브론즈 4 문제)
입력
1.
3 3 6
2.
2 2 2
3.
6 2 5
출력
1.
1300
2.
12000
3.
600
내 코드
f,s,t=map(int,input().split())
list=[]
if(f==s==t):
result=10000+f*1000
elif(f==s and s!=t):
result=1000+f*100
elif(s==t and f!=t):
result=1000+s*100
elif(f==t and s!=t):
result=1000+f*100
else:
list.append(f)
list.append(s)
list.append(t)
list.sort()
result=list[2]*100
print(result)
풀이(생각 과정)
1번째 경우 조건식 그대로 구현하였다.
2번째의 경우 1개만 같은 경우 각각 조건을 설정하여 계산하였다.
마지막으로 최댓값을 이용해서 계산을 하는 방식이여서 리스트에 3개의 값을 먼저 대입하고 sort 함수를 통해 오름차 순으로 정렬했다. 그 후 리스트의 끝값을 가져와서 계산하였다.
아쉬운 점은 파이썬에 대한 지식이 모자란 탓인지 3번째 조건식에서 불필요한 계산을 많이 하였다.
개선된 다른 풀이
A,B,C=map(int,input().split())
max= max([A,B,C])
pp=0
if A==B==C:
pp=A*1000+10000
print(pp)
else:
if A==B:
pp=A*100+1000
elif A==C:
pp=A*100+1000
elif B==C:
pp=B*100+1000
else:
pp=max*100
print(pp)
파이썬의 경우 최댓값을 구할 수 있는 max 함수가 수학적으로 이미 구현되어 있다. 따라서 대입 받은 값에 대해 max 함수를 실행하면 바로 최댓값을 구할 수 있다.
큰 틀을 값이 3개 전부 같은 경우와 아닌 경우로 나누고 그 후 계산하는 것이 보기에 훨씬 깔끔했다. 또한 이렇게 경우를 나눌 경우 !=을 사용할 필요 없이 같다라는 조건식 하나만 두고 진행할 수 있다.
파이썬 기초 지식이 모자라다는 것과 함께 조건의 큰 틀을 잡을 수 있는 능력을 길러야겠다.
'알고리즘 공부 > 알고리즘 구현 기초' 카테고리의 다른 글
백준) 과제 안 내신분...?-파이썬 (0) | 2023.06.23 |
---|---|
백준) 공 바꾸기-파이썬 (0) | 2023.06.22 |
백준) 공 넣기-파이썬 (0) | 2023.06.20 |
백준) 오븐 시계-파이썬 (0) | 2023.06.19 |
백준) 곱셈-파이썬 (0) | 2023.06.18 |