[프로그래머스] 42839 소수 찾기

1 분 소요

프로그래머스 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알고리즘 완료🤓

댓글남기기