728x90
반응형
https://www.acmicpc.net/problem/1747
우선 팰린드롬인지 판별하는 함수 isPalindrome(int i)를 만들었다
숫자를 String으로 변환한 후,
양 끝에서부터 한쌍씩 비교하여 팰린드롬인지 판별한다.
이후 main함수에서
N부터 maxValue까지
팰린드롬인 숫자라면
소수인지 계산한 후,
값을 출력한다.
.
.
개인적인 능지 문제로 첫 시도를 실패했다
더보기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class P1747 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
for (int i = N; i < Integer.MAX_VALUE; i += 2) {
if (isPalindrome(i)) {
boolean isP = true;
for (int k = 3; k <= (i / 2); k++) {
if (i % k == 0) {
isP = false;
break;
}
}
if (isP) {
System.out.println(i);
return;
}
}
}
}
static boolean isPalindrome(int num) {
String str_num = String.valueOf(num);
int i = 0, j = str_num.length() - 1;
while (i < str_num.length() / 2) {
if (str_num.charAt(i) == str_num.charAt(j)) {
i++;
j--;
} else {
return false;
}
}
return true;
}
}
소수판별하는데 루트씌워야되는걸 나누기2를 하고..
N이 짝수일수도 있는데 신경도 안쓰고.. 이상하게 코드를 짰다.
처음엔 이 코드가 소수구하는데 시간이 오래걸려서 그런가? 싶었는데
코드를 수정했더니 잘 됐다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class P1747 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
for (int i = ((N < 2) ? 2 : N); i < Integer.MAX_VALUE; i++) {
if (isPalindrome(i)) {
boolean isP = true;
for (int k = 2; k <= Math.sqrt(i); k++) {
if (i % k == 0) {
isP = false;
break;
}
}
if (isP) {
System.out.println(i);
return;
}
}
}
}
static boolean isPalindrome(int num) {
String str_num = String.valueOf(num);
int i = 0, j = str_num.length() - 1;
while (i < str_num.length() / 2) {
if (str_num.charAt(i) == str_num.charAt(j)) {
i++;
j--;
} else {
return false;
}
}
return true;
}
}
추가로,
배열을 만들어서 1부터 특정숫자까지 미리 소수판정을 다 해놓고 사용하는 방법도 좋을 것 같다.
(하지만 최대숫자를 무엇으로 할지.. 고민이 될 듯 하다. 너무 큰 수면 계산하는데 시간이 오래걸릴터이고 너무 작으면 내가 판별하려는 숫자가 그 범위에 없을수도)
728x90
반응형
'코딩 > 백준-자바' 카테고리의 다른 글
[자바] 백준 11657번: 타임머신 (0) | 2023.01.18 |
---|---|
[자바] 백준 2621번: 카드게임 (0) | 2023.01.17 |
[자바] 백준 1652: 누울 자리를 찾아라 (0) | 2023.01.16 |
[자바] 백준 1764번: 듣보잡 (0) | 2023.01.16 |
[자바] 백준 3649번: 로봇 프로젝트 (0) | 2023.01.16 |
댓글