[프로그래머스] 42839 소수 찾기
프로그래머스 level2
문제
Java (20.07.03)
Javascript (21.05.06)
문제 풀이
문제 리뷰 (Java)
✅ 1. 문자열로 주어진 숫자 쪼갠 후, int형 배열에 저장하기
✅ 2. 주어진 숫자로 조합 가능한 수들을 탐색하기 (순열)
이 부분이 가장 중요한 부분이다.
우선 주어진 숫자들로 조합 가능한 수를 모두 찾는게 편할 것 같았다.
그리고 거기서 소수들을 찾아서 카운팅하는 것이다
여기서 생각난 개념들은 조합과 순열이었다.
조합과 순열 중 선택한 것은 순열이다.
우선 이유를 보기 전에 조합과 순열을 간략하게 정리해보자면
- 조합 : 중복X, 순서X
- 순열 : 중복X, 순서O
- 이렇게 정리할 수 있다.
- 자세한 설명은 하단에 첨부한 링크를 참고하면 좋다.
정말 코드와 설명이 깔끔하게 정리되어 있다.
주어진 숫자가 17이라고 한다면
이 숫자로 조합 가능한 수는 [1, 7, 17, 71] 일 것이다.
이 조합에는 순서가 필요하다.
17과 71은 같지 않기 때문이다.
그래서 순열을 사용했다.
✅ 3. 소수 판별, 중복 판별 후, 배열에 저장하기
- 11과 011은 같은 숫자로 취급합니다.
문제에 설명되어있는 조건이다.
순열로 조합되고있는 수는 int형 배열 arr이다.
이 수들을 하나의 숫자로 만들기 위해 문자열 s에 이어 붙여준 상태이다.
그리고 위와 같은 조건을 만족시키기위해 int형으로 바꿔준 후,
소수이고, 중복되지 않는 수를 resultArr에 저장시켜줬다.
✅ 4. 배열 길이 반환하기
resultArr의 길이를 반환해주면 답을 구할 수 있다.
resultArr에는 우리가 구하고자한 수들이 들어있다.
참고
TMI
2월의 마지막 날
1일 1알고리즘 완료🤓
댓글남기기