https://www.acmicpc.net/problem/1436
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int i=666;
int cnt=1;
while(cnt!=n){
i++;
String numStr = Integer.toString(i); // 숫자를 문자열로
boolean flag = false;
for(int j=0; j<=numStr.length()-3; j++){
if(numStr.charAt(j)-'0' == 6 && numStr.charAt(j+1)-'0' == 6 && numStr.charAt(j+2)-'0'==6){
if(!flag) cnt++;
flag =true;
}
}
}
System.out.println(i);
}
}
0부터 숫자를 증가시키면서 그 숫자가 연속으로 6을 3개이상 포함하고 있으면 카운트를 증가시킨다.
이때 66660 과 같이 6이 3개 이상 있으면 카운트가 1개이상 증가하므로 이를 체크하기 위해 boolean형 변수를 만들었다.
입력받은 숫자와 카운트가 같아질때의 숫자 i 를 구하면 된다.
근데 이렇게까지 할 필요가 없는게 다른 풀이들을 보니 contains함수를 쓰면 간단해질수 있었다.
까먹었는데 잘 기억해 놓자,,
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int i=666;
int cnt =1;
while(cnt!=n){
i++;
if(String.valueOf(i).contains("666")) cnt++;
}
System.out.println(i);
}
}
'ALGORITHM' 카테고리의 다른 글
[JAVA] 백준 11724번 - 연결 요소의 개수 (0) | 2022.09.18 |
---|---|
[JAVA] 백준 2606번 - 바이러스 (0) | 2022.09.17 |
[JAVA] 백준 1018번 - 체스판 다시 칠하기 (0) | 2022.09.15 |
[JAVA] 백준 7568번 - 덩치 (0) | 2022.09.14 |
[JAVA] 백준 2231번 - 분해합 (0) | 2022.09.13 |