728x90
반응형
🙆♂️문제
🙋♂️풀이
문제 요약 : 자연수 N을 입력받으면 숫자 666이 들어간 수 중 가장 작은 수부터 N번째로 작은 숫자를 출력하면 된다.
666이 첫 번째 1666이 두 번째...
🚀 입력받기
n=int(input())
간단하게 숫자 하나를 입력받는다.
🚀 경우의 수 탐색
이 숫자에는 패턴이 있다.
[0~9]666 다음은 [0]666[0~9],[1]666[0~9] ... 이런식으로 가다가 [0]666[0][0~9],[0]666[1][0~9] 이런식으로 패턴이 있다.
설명을 잘 못해가지구 코드를 보면 바로 이해가 되실겁니다.
movie=[]
for i in range(10):
for j in range(10):
for k in range(10):
for q in range(10):
case1=[i,j,k,q,666]
case2=[i,j,k,666,q]
case3=[i,j,666,k,q]
case4=[i,666,j,k,q]
case5=[666,i,j,k,q]
case1=map(str,case1)
case2=map(str,case2)
case3=map(str,case3)
case4=map(str,case4)
case5=map(str,case5)
string1="".join(case1)
string2="".join(case2)
string3="".join(case3)
string4="".join(case4)
string5="".join(case5)
movie.append(int(string1))
movie.append(int(string2))
movie.append(int(string3))
movie.append(int(string4))
movie.append(int(string5))
1만개 이상 나올 수 있는 경우의 수를 모두 종합해서 movie 배열에 넣었습니다.
방법은 간단합니다.
- 반복문을 통해 배열로 만들고
- 배열을 문자열로 만들어서 join 함수를 통해 합치고
- int로 다시 형변환 시켜서 movie라는 배열에 append하기
그럼 여기서 2가지 의문이 생깁니다.
"값이 중복되는게 생기는데?" 와"순서대로 안되는데?" 입니다.
#값이 중복되는데?를 해결
movieSet=list(set(movie))
#순서대로 안되느데?를 해결
movieSet.sort()
위의 두 함수로 두 가지 의문을 해결합니다.
🚀 출력하기
print(movieSet[n-1])
출력할 때는 입력값에 1을 뺀 인덱스 값을 출력합니다. 배열 인덱스는 0부터 시작하기 때문입니다.
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
[백준][Python] 2751. 수 정렬하기 2 (0) | 2022.07.18 |
---|---|
[백준][Python] 2750. 수 정렬하기 (0) | 2022.07.18 |
[백준][Python] 1018. 체스판 다시 칠하기 (0) | 2022.07.15 |
[백준][Python] 7568. 덩치 (0) | 2022.07.15 |
[백준][Python] 2231. 분해합 (0) | 2022.07.15 |