[BOJ] 5883. 아이폰 9S

이정진·2021년 5월 6일
1

PS

목록 보기
1/76
post-thumbnail

아이폰 9S

알고리즘 구분 : 브루트포스

문제 풀이 : 특정 원소를 제거한 상황에서 반복문으로 Count할 수 있도록 구현하였다.
처음 식을 구현하였을 때, line 22와 line 23 사이에 result = max(result, cnt)를 위치시켰으나 틀렸다고 나왔었다. 그 이유는 해당 조건문이 진행된 이후에, 최댓값 비교를 통하여 result 값을 변화시켜야 했으나 조건문 내에서 확인을 진행하게 되면서 틀린 값이 나오는 테스트 케이스가 존재하였던 것으로 보인다.
위 문장의 예시로, 마지막 원소까지 연결되어 있을 경우, else문으로 들어가지 않으면서 result = max(result, cnt) 함수가 실행되지 않아 result 값이 올바르게 바뀌지 않았을 것이다.

소스 코드 :

import sys

# 입력 받을 개수
n = int(sys.stdin.readline())

# 값 입력받기
data = []
for _ in range(n):
    data.append(int(sys.stdin.readline()))

# 결과 변수 및 이미 한 번 체크하였었던 수인지를 확인하기 위한 리스트 선언
result = 0
already = [0] * 1000001

# 확인 진행
for i in data:
    if already[i]:
        continue
    already[i] = 1
    cur = data[0]
    cnt = 1
    for j in range(1 ,len(data)):
        if i == data[j]:
            continue
        if cur == data[j]:
            cnt += 1
        else:
            cur = data[j]
            cnt = 1
        result = max(result, cnt)

print(result)

0개의 댓글