240402-TIL

2024. 4. 2. 20:39내일배움캠프

4월 2일

 

오늘은 로또 1등이 당첨되는 마음을 빌어

 

로또의 최고 순위와 최저 순위라는 알고리즘 문제를 풀어보았다.

 

로또의 최고 순위와 최저 순위

더보기

 

로또의 순위를 정하는 방식을 먼저 설명해주고 있다. 

 

민우 동생만 아니었으면 문제를 풀 필요도 없었을텐데 정말 아쉽다.

 

낙서때문에 알아보지 못하는 로또 번호는 0번으로 표기되어 lottos배열에 들어오고

 

로또 정답은 win_nums 배열에 들어온다고한다.

 

사실 말은 엄청 길게하는데 우리가 구해야하는건 최고순위와 최저순위이다.

 

최저순위는 말 그대로 알아볼 수 있는 수중에서 로또 정답과 같은것

 

그리고 최고 순위는 최저순위 + 낙서를 해서 알아보지 못하는 로또번호의 개수가 될것이다.

 

알고리즘을 풀기전에 이번에는 Sloution 클래스에 로또 등수를 알려줄 메서드 하나를 먼저 추가해보자

 

어떤 수가 들어오면 그 수를 가지고 switch문을 돌아 등수를 반환해주는 메서드 하나를 만들고 시작했다.

 

 이 상태로 시작하자

 

 본격적으로 반복문을 돌면서 민우가 찍은 번호가 당첨번호인지 알아보기 전에

 

민우가 찍은 번호가 당첨번호라면 1씩 증가시켜줄 temp와

 

동생이 낙서를 해서 알아보지 못하는 번호라면 1씩 증가시켜줄 zero를 만들어주자

 

 

그 다음으로는 본격적으로 반복문을 만들어주자

 

lottos의 길이만큼 반복이 되고 반복문이 돌때마다 lottos[i]가 0이라면 zero를 올려주고

 

0이 아니라면? win_nums 안에 lottos[i]의 값과 같은 값이 있다면? temp를 올려주도록 하자 

 

Contains는 win_nums의 배열 안에 같은 값이 하나이상 들어있다면 true를 반환해주고 아니면 false를 반환해주는 녀석인데

 

여기서 win_nums안에 같은 값이 두개 이상이 들어간다면 이런식으로 조건을 작성하면 안된다

 

하지만

 

 

제한사항을 보면 win_nums에는 같은 숫자가 2개 이상 담겨있지 않는다고 하니 편하게 Contains를 써가지고

 

비교하도록 하자!

 

문제를 시작하기 전에 만들어둔 등수반환 메서드가 여기서 사용된다

 

answer[0]에는 내가 당첨될 수 있는 최고 등수

answer[1]에는 내가 당첨될 수 있는 최저 등수를 반환해줘야하는데

 

최고등수는 내가 맞춘 정답 temp + 동생이 낙서해서 알아보지는 못하지만 정답일 가능성이 있는 zero를 더해주고

 

최저 등수는 내가 맞춘 정답 temp만 넣어주면 된다.

 

 

텅과!

어제는 진짜 어려웠는데

 

오늘은 생각보다 너무 쉬웠다. 로또 당첨이라고 하니깐 눈이 돌아가서 그런가?

 

4월 2일 TIL은 여기서 마치도록 하겠다.

'내일배움캠프' 카테고리의 다른 글

240404-TIL  (0) 2024.04.04
240403-TIL  (0) 2024.04.03
240401-TIL  (0) 2024.04.01
240329-TIL  (0) 2024.03.29
240328-TIL  (0) 2024.03.28