[백준] 1076번. 저항 (Python)

윤라이트·2023년 11월 8일

백준 코딩테스트

목록 보기
16/25

하이루 ~
오늘은 급하게 뭐 좀 먹는다고 시간이 늦어버린 관계로 브론즈2 문제를 풀었다.





[백준] 1076번. 저항


문제 분석은 쉬웠다. C언어로 풀었다면 switch문을 사용해서 풀었을 거 같지만 정답을 맞춰보니 그렇게 하는 것보다 더 나은 방법이 있었다.

일단 나는 처음엔 if-else문을 사용하려 했으나 매우 비효율적인 코드가 나올 것 같아 고민을 했다.

그러다 문득 딕셔너리의 존재를 떠올렸고 풀기 시작했다.




그렇게 정답이 나온 코드는 아래와 같은데
백준에선 계속 틀렸다고 나왔다.
정답은 맞는데 시간이 2초가 넘는 코드인 것인가 ?

[정답은 맞지만 틀렸다는 코드]

firstCol = input()
secondCol = input()
thirdCol = input()
Color = {'black' : 0, 'brown' : 1, 'red' : 2, 'orange' : 3,
'yellow' : 4, 'green' : 5, 'blue' : 6, 'violet' : 7, 'grey' : 8, 'white' : 9}
j = 1
num3 = 1
num2 = 0
num1 = 0

if thirdCol == 'black' :
    print(Color[firstCol], Color[secondCol], 1, sep = '')
else :
    print(Color[firstCol], Color[secondCol], '0' * Color[thirdCol], sep = '')

그렇게 다른 사람들의 코드를 참고 했더니
print문 한 번으로도 가능하다는 것을 알았다 !!

그래서 이를 적용하고 아래와 같이 풀었더니
정답이 떴다.






[정답 코드] 백준 1076번. 저항 (Python)

firstCol = input()
secondCol = input()
thirdCol = input()
Color = {'black' : 0, 'brown' : 1, 'red' : 2, 'orange' : 3,
'yellow' : 4, 'green' : 5, 'blue' : 6, 'violet' : 7, 'grey' : 8, 'white' : 9}
j = 1
num3 = 1
num2 = 0
num1 = 0

print((10 * Color[firstCol] +  Color[secondCol]) * (10 ** Color[thirdCol]))

헤헷.
정답이 나왔군.



문제 풀이

  1. 첫 번째 입력 값을 10의 자리로 만들어 주고
  2. 두 번째 입력 값을 1의 자리 그대로 해서 더해주고 마지막으로
  3. 10의 제곱 형태로 해당 값의 개수만큼 제곱해서 더해주면 끝!!!

헤헤. 참고한 문제보다 내가 작성한 코드가 시간이 젤 적게 걸린당.ㅎㅎㅎㅎ

기분이 조크나하 ~~~

끝 - !

profile
끝까지 가보자9~!!!🔥✨💡

0개의 댓글