문제 바로가기
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
나의 코드 및 설명(시간초과)
- 예를 들어, 3 0 1을 입력 받았을 때, 2중 for문을 통해 모든 연속된 수열(3,0,1,30,301)을 구해서 리스트에 저장한다.
- 하지만 이렇게 풀게 되면 시간초과가 발생하게 된다.
t = int(input())
for test_case in range(1, t+1):
n = int(input()) #정수의 개수
num = ""
while True:
num += "".join(map(str, input().split()))
if len(num) == n:
break
num_list = list(map(int, str(num)))
result = []
for i in range(1, len(num_list)+1): # i = 1,2,3
for j in range(len(num_list)+1 - i):
if int("".join(map(str, num_list[j:j+i]))) not in result:
result.append(int("".join(map(str, num_list[j:j+i]))))
answer = -1
for i in range(max(result)+1):
if i not in result:
answer = i
break
print("#{} {}".format(test_case, answer))
다른 코드 및 설명
- num = ""
num += "".join(map(str, input().split())) #공백을 포함한 문자를 입력받는다.
줄바꿈, 공백을 통한 입력은 while문을 활용한다. - 예를 들어, string = "hellosonic" 일 때, if "sonic" in string: 과 같이 문자열을 조건문에 그대로 활용이 가능하다.
t = int(input())
for test_case in range(1, t+1):
n = int(input())
num = ""
while True:
num += "".join(map(str, input().split())) #공백을 포함한 문자를 입력받는다.
if len(num) == n: #문자열의 길이가 n이되면 입력 반복문 탈출
break
check = 0
while True: #0부터 문자열에 있는지 찾는다.
if str(check) not in num:
break
check += 1
print("#{} {}".format(test_case, check))
피드백
분명히 잘 풀었다고 생각했는데 시간초과가 발생했다. 생각보다 단순하게 푸는 것이 가능했다. 입력값들을 문자열로 만들고, 그 문자열에 str 자료형으로 변환한 숫자가 포함되지 않을 때까지 반복문을 돌리면 되는 것이었다. 시간 초과를 방지하기 위한 문제풀이는 어떤 것이 있을까 고민해보는 것이 습관화되어야할 것 같다. 단순하게 푸는 연습을 하자
'SWEA (SW Expert Academy) > D3' 카테고리의 다른 글
[SWEA/D3] 10580 전봇대 (0) | 2023.05.18 |
---|---|
[SWEA/D3] 7272 안경이 없어! (0) | 2023.05.18 |
[SWEA/D3] 1240 [S/W 문제해결 응용] 1일차 - 단순 2진 암호코드 / 딕셔너리 키,값 초기화에 유의하자 (0) | 2023.05.17 |
[SWEA/D3] 1493 수의 새로운 연산 (0) | 2023.05.17 |
[SWEA/D3] 1873 상호의 배틀필드 (0) | 2023.05.16 |