Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 백준 2870번
- 백준 c++ 2468번
- 2468 c++
- Lv.3
- 코딩테스트
- C#
- 코테
- 백준 c++ 2870번
- 백준
- dfs
- 2870번
- 2870번 c++
- 17070번
- Unity
- 유니티
- 백준 1103번 게임
- 2870번 수학숙제
- 백준 17070번
- Lv2
- Algorithm
- 백준 1103번 c++
- 백준 1103번
- 프로그래머스
- 백준 17070번 c++
- Beakjoon
- c++
- 수학숙제
- 2870번 수학숙제 c++
- 플레이어 이동
- 오브젝트 풀링
Archives
- Today
- Total
주녘공부일지
[프로그래머스 C#] Lv.2 k진수에서 소수 개수 구하기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/92335
1. 정답코드 및 핵심 아이디어, 유의사항
- 코드참조 ( 진수변환 -> 0을 기준으로 숫자 추출 -> 소수체크 )
+ 만약 테스트 1번만 시간초과가 뜬다면 소수를 체크하는 부분에서 최적화가 이루어지지 않았기 때문일 확률이 높다.
https://godgjwnsgur7.tistory.com/85
+ StringBuilder이 아닌 string으로 사용해도 시간초과는 뜨지 않지만, 문자열 내의 추가, 삭제 등이 많이 이루어진다면 StringBuilder를 사용하는 것이 좋다. // 테스트 1번 기준 2~3초 차이
https://godgjwnsgur7.tistory.com/66
using System;
using System.Text;
public class Solution
{
public int solution(int n, int k)
{
int answer = 0;
long num = 0;
StringBuilder sb = new StringBuilder();
// 1. 진수변환
while (n != 0)
{
sb.Insert(0, (n % k).ToString());
n /= k;
}
// 2. 0을 기준으로 숫자를 추출
for (int i = 0; i < sb.Length; i++)
{
if (sb[i] != '0')
{
num *= 10;
num += (long)sb[i] - '0';
}
else
{
if (Function(num))
answer++;
num = 0;
}
}
// 예외처리
if (Function(num))
answer++;
return answer;
}
// 소수 체크 함수
public bool Function(long num)
{
if (num < 2)
return false;
for (int i = 2; i <= Math.Sqrt(num); i++)
if (num % i == 0)
return false;
return true;
}
}
'CodingTest > Programmers Lv.2' 카테고리의 다른 글
[프로그래머스 C#] Lv.2 연속 부분 수열 합의 개수 (0) | 2023.08.25 |
---|---|
[프로그래머스 C#] Lv.2 귤 고르기 (0) | 2023.08.25 |
[프로그래머스 C#] Lv.2 호텔 대실 (0) | 2023.08.23 |
[프로그래머스 C#] Lv.2 소수 찾기 (2) | 2023.08.23 |
[프로그래머스 C#] Lv.2 스킬트리 (0) | 2023.08.23 |