프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
해당 문제는 패턴을 활용하고 index를 어떻게 구분짓는지 달렸다고 생각했다.
초기 코드는 정말 index를 일정하게 맞추는데 초점을 두었다.
def solution(answers):
answer = []
case1 = [1, 2, 3, 4, 5]
case2 = [2, 1, 2, 3, 2, 4, 2, 5]
case3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
count = [0, 0, 0]
c1, c2, c3 = 0, 0, 0
for i in range(len(answers)):
if c1 >= len(case1):
c1 = 0
if case1[c1] == answers[i]:
count[0]+=1
else:
if case1[c1] == answers[i]:
count[0]+=1
# print(c1)
if c2 >= len(case2):
c2 = 0
if case2[c2] == answers[i]:
count[1]+=1
else:
if case2[c2] == answers[i]:
count[1]+=1
if c3 >= len(case3):
c3 = 0
if case3[c3] == answers[i]:
count[2]+=1
else:
if case3[c3] == answers[i]:
count[2]+=1
c1+=1
c2+=1
c3+=1
# print(f"{i+1}회 완료")
# print(count)
for k in range(1, 4):
if count[k-1] == max(count):
answer.append(k)
return answer
L = [1, 2, 3, 4, 5, 1, 3, 5, 2, 4]
print(solution(L))
이 코드에서 가장 비효율적인 것은 c1, c2, c3의 변수들을 계속 증가시키고 0으로 초기화 해주는 부분에 있다.
i % len(case1) 같은 코드를 활용하면 패턴 길이에 따라 달라지는 몫을 얻고 원하는 index값을 얻을 수 있다.
그럼으로 불필요한 c1, c2, c3변수를 삭제하고 코드를 간소화 했다.
for문에서 조건문을 넣으면서 if count[k-1] == max(count): 이런 방식으로 코딩해 조건문이 실행될 때마다 count 리스트의
최대값을 계속 계산했다. 변수에 할당하여 재사용 하는 방식으로 간소하지만 번거로운 작업을 줄일 수 있다.
def solution(answers):
answer = []
case1 = [1, 2, 3, 4, 5]
case2 = [2, 1, 2, 3, 2, 4, 2, 5]
case3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
count = [0, 0, 0]
for i in range(len(answers)):
if case1[i % len(case1)] == answers[i]:
count[0] += 1
if case2[i % len(case2)] == answers[i]:
count[1] += 1
if case3[i % len(case3)] == answers[i]:
count[2] += 1
max_count = max(count) # max(count)를 한 번만 계산
for k in range(1, 4):
if count[k - 1] == max_count:
answer.append(k)
return answer
# 테스트 코드
L = [1, 2, 3, 4, 5, 1, 3, 5, 2, 4]
print(solution(L))
'<코딩테스트> > [프로그래머스]' 카테고리의 다른 글
[프로그래머스] > 코딩테스트 연습2023 > KAKAO BLIND RECRUITMENT > 이모티콘 할인행사 (3) | 2024.10.20 |
---|---|
[프로그래머스] > LV.2 > 타겟넘버 (0) | 2024.10.20 |
[프로그래머스] LV2 > 연습문제 > 뒤에 있는 큰 수 찾기 (0) | 2024.09.23 |
[프로그래머스] LV2 > 완전탐색 > 소수 찾기 (0) | 2024.09.12 |
[프로그래머스] LV1 > 완전탐색 > 최소직사각형 (0) | 2024.09.08 |