티스토리 뷰
⊙ 문제
⊙ 입력
⊙ 출력
⊙ 예제 입출력
⊙ 알고리즘 분류
- 브루트포스 알고리즘
⊙ 문제 접근 과정
6이 연속으로 3번
666, 1666, 2666, 3666, 4666, 5666 ,6660, 6661 이런 식으로 증가한다.
처음엔 이 경우를 생각하지 못하고 5666,6666,7666으로 생각해 코드가 굉장히 쉽게 짜져
당당히 채점을 해봤는데
결과는 역시.
위처럼 예외의 경우도 다 계산해줘야 한다.
나는 count를 활용했다.
자연수를 계속 증가시켜 6이 연속 3번 있는 666이 포함된 값을 지나갈 때
count stack이 1 증가하도록 설정했다. 이때 str 클래스의 contains() 함수를 활용했다.
그리고 count와 처음에 입력받은 N이 같아질 때까지 계속 반복시켜줬다.
count 값과 N값이 같아지면 우리가 원하는 값인 num을 출력하도록 하도록 알고리즘을 구상했다.
⊙ contains()
자바에서 contains() 함수는 문자열에 특정 문자열이 포함되어 있는지 확인해주는 함수이다.
대소문자를 구분하고 특정 문자열이 포함되어 있으면 true, 없다면 false를 반환한다.
⊙ contains() 사용법
str.contains("찾고자 하는 문자열");
⊙ 문제 풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int num = 1;
int count = 0;
while (count!=N) {
String shhom = ""+num;
if (shhom.contains("666")) {
count++;
}
num++;
}
System.out.println(num-1);
}
}
⊙ 결과
⊙ 마무리
브루트포스 알고리즘이 생각보다 까다롭고 메모리, 시간 부분에서 실력차이가 많이 나타났다.
브루트포스 알고리즘 특성상 모든 경우의 수를 대입해보기 때문에 메모리 양과 데이터 양이 절대적으로 많다.
그래서 여러 가지 방법으로 문제에 접근할 수 있어야 하고 그 접근방법들 중에서 가장 최적의 방법을 선별해 문제를 풀어야겠다고 생각했다.
'백준 온라인 저지 [BOJ] > JAVA [자바]' 카테고리의 다른 글
[백준(BOJ)] 1152번 : 단어의 개수 - JAVA[자바] (2) | 2021.04.12 |
---|---|
[백준(BOJ)] 10926번 : ??! - JAVA[자바] (1) | 2021.04.12 |
[백준(BOJ)] 1094번 : 막대기 - JAVA[자바] (0) | 2021.04.11 |
[백준(BOJ)] 5338번 : 마이크로소프트 로고 - JAVA[자바] (0) | 2021.04.11 |
[백준(BOJ)] 5337번 : 웰컴 - JAVA[자바] (0) | 2021.04.11 |
- Total
- Today
- Yesterday
- 우종정
- 쉽게배우는
- 문자열
- 해답
- 알고리즘
- 연습문제
- 정리
- Web
- 파이썬
- Python
- C++
- OS
- 쉽게 배우는 자바 프로그래밍
- 풀이
- 쉽게배우는자바프로그래밍
- BFS
- 자바
- CPP
- 정렬
- 프로그래머스
- 백준
- 자바스크립트
- JS
- py
- 정답
- 그리디
- 답
- java
- 구현
- 운영체제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |