TIL/kotlin 알고리즘

kotlin 프로그래머스 lv1 모의고사

crablo 2024. 2. 8. 14:16
728x90

해당문제를 보자마자 수포자들찍는 방식이 옛날 초등학교때

숫자의 규칙을 찾는것처럼 생겼다는 생각이 들었다.

1번 수포자는 1,2,3,4,5 로 순환되는 숫자의 형태로 찍고 있고,

2번 수포자는 2,1,2,3,2,4,2,5... 이런식으로 8번찍 반복된다.

3번 수포자도 위의 사람들과 같이 

3,3,1,1,2,2,4,4,5,5.. 10개씩 순환된다.

그래서 각각 배열을 만들었다.

그 후 answer값과 supoja 리스트값들을 비교하면서 count 하면 될것 같았다.

새로운 맵을 초기화한 후

answer 만큼 반복하면서 키 1 2 3 에 카운팅을 하기로 했다.

 

answers는 맵이 아니기 때문에 count를 바로 할 수 없었다,

그래서 withIndex()함수를 사용해서

index와 value값을 사용할 수 있었는데

for문안에서 (index,answer)는 내가 지정한

answers의 인덱스와 value를 변수로 지정한것이다.

그 후 if문안에서 supoja들의 index를 supoja들의 배열 길이만큼 나눈 나머지

만큼씩 규칙이 정해지고 그 값들을 answer과 비교한 후

scores각각의 키값에 비교한 후 같은 값들을 1씩 더해나간다.

 

그 후 scores 안에서 최고값은 maxScore에 저장하고

scores의 최곳값을 filter 및 정렬한다.

 

 

728x90