[백준] 1436 - 영화감독 숌
2020. 10. 6. 19:29ㆍ알고리즘/Baekjoon
728x90
백준 사이트 바로가기
#Java API 메서드를 사용해도 되지만, 저도 그렇게 풀었습니다. 시간과 메모리 부하를 줄 수 있기 때문에 다른 분들의 코드를 참고했습니다. 그 중에 제 눈높이에 맞고 시간도 오래 걸리지 않는 코드를 가져와 보았습니다.
우선 제가 푼 방식입니다. String.valueOf(int)를 활용해도 됩니다.
1) String.valueOf 사용한 풀이 - 간단하지만 (시간 복잡도가)복잡하다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
|
public class DirectorShom_1436 {
static int[] tripleSix;
static int N;
static int idx = 1;
public static void main(String[] args) throws IOException {
tripleSix = new int[10001];
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
for (int i = 666; i < 100000000; i++) {
if (tripleSix[N] != 0)
break;
if (String.valueOf(i).contains("666")) {
tripleSix[idx] = i;
idx++;
}
}
System.out.println(tripleSix[N]);
}
}
|
cs |
2) 연산자 %를 사용한 풀이 - 간단하고 (시간 복잡도가)단순하다.
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
32
33
|
//똑똑한 방법을 찾았다!
public class DirectorShom_1436_ex {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
System.out.println(func(N));
}
public static int func(int n) {
int order = 0;
int result = 0;
int target = 0;
for (int i = 666; order < n; i++) {
target = i;
while (target > 100) {
if ((target % 1000) == 666) {
order++;
result = i;
break;
}
target /= 10;
}
}
return result;
}
}
|
cs |
'알고리즘 > Baekjoon' 카테고리의 다른 글
[백준] 1463 - 1로 만들기 (0) | 2020.10.14 |
---|---|
[백준] 1904 - 01 타일 (0) | 2020.10.14 |
[백준] 3053 - 택시 기하학 (0) | 2020.09.22 |
[백준] 2775 - 부녀회장이 될테야 (0) | 2020.09.18 |
[백준] 2292 - 벌집 (0) | 2020.09.14 |