> 실패 코드

import itertools
tc=int(input())
arr=[]
for _ in range(tc):
    arr.append(int(input()))
per=list(itertools.permutations(arr,2))
sorted=[]
for i in per:
    num=str(i[0])+str(i[1])
    num=int(num)
    sorted.append(num)
sorted.sort()
print(sorted[2])

<코드 설명>

tc로 testcase를 input 받는다.

tc만큼 for문을 반복하여 arr에 숫자들을 입력받는다.

그리고 리스트 내의 원소를 조합해주는 itertools.permutations를 이용하여 arr의 원소들의 모든 조합을 per 변수에 저장해주었다.

per 원소에서의 첫번째 원소와 두번재 원소를 이어주어 num에 저장한 후, int로 형변환을 한다. 그리고 이를 sorted 리스트에 추가해주었다.

이 리스트를 sort해주어 세번째로 작은 수를 출력해주었다.

 

-> 하지만 메모리 초과 오류가 떴다. 아마 숫자 간의 조합을 모두 구해서 그런 것 같았다.

 

> 성공 코드

tc=int(input())
arr=[]
for _ in range(tc):
    arr.append(int(input()))
arr.sort()
sorted=[]
for i in arr[:4]:
    for j in arr[:4]:
        if i!=j:
            num=int(str(i)+str(j))
            sorted.append(num)
sorted.sort()
print(sorted[2])

<코드 설명>

앞선 코드와 달리 모든 조합을 구하지 않았다.

arr배열을 먼저 sort한 후, 작은 원소 4개까지만 지정하여 조합을 구하도록 하였다.

나머지 코드는 위와 동일하다.

 

<실행 결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 10988 팰린드롬인지 확인하기  (0) 2023.09.30
[BOJ] 1629 곱셈  (0) 2022.11.20
[BOJ] 17413 단어 뒤집기 2  (1) 2022.11.20
[BOJ] 1543 문서 검색  (0) 2022.11.13
[BOJ] 3077 임진왜란  (0) 2022.11.13

+ Recent posts