[백준 알고리즘] (I/O) 10992번 Java 풀이
입출력 - 2557, 1000, 2558, 10950, 10951, 10952, 10953, 11021, 11022, 11718, 11719, 11720, 11721, 2741, 2742, 2739, 1924, 8393, 10818, 2438, 2439, 2440, 2441, 2442, 2445, 2522, 2446, 10991, 10992
출처: https://plzrun.tistory.com/entry/알고리즘-문제풀이PS-시작하기 [plzrun's algorithm]
알고리즘 문제풀이(PS) 시작하기
이런건 고수들이나 써야 하지 않나 싶지만, 그래도 1년정도 공부하면서 이 분야를 어떻게 시작해야 할지 써보려 한다. 라고 운을 뗀다음 열심히 내 얘기만 했던 후속편이다. 내 인생사가 궁금하신 분들은 이 글의..
plzrun.tistory.com
change Nxxxx -> Main && remove package lines!!!
이클립스에서 작성하면서 문제 이름으로 클래스를 생성하여 풀었기 때문에
클래스 이름을 Main으로 바꾸고, package 부분도 지우고 제출해야 정상적으로 돌아갑니다.
<풀이>
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
34
35
36
37
38
39
|
package io;
public class N10992 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int p=0; p<n-1; p++) {
System.out.print(" ");
}
System.out.print("*");
System.out.println("");
for(int p=0; p<n-2; p++) {
for(int q=0; q<n-p-2; q++) {
System.out.print(" ");
}
System.out.print("*");
for(int q=0; q<2*p+1; q++) {
System.out.print(" ");
}
System.out.print("*");
System.out.println("");
}
if(n!=1) {
for(int p=0; p<2*n-1;p++) {
System.out.print("*");
}
}
}
}
|
문제를 보면 겉으로는 이전까지 풀었던 별 찍기 문제와 굉장히 유사해 보이는데,
개인적으로는 처음 접근할 때 좀 당황스러웠다.
처음 직관적으로 들었던 생각은 마지막 행만 따로 코딩해주고 이전의 10991번 문제와 유사하게 코딩을 하면 되지 않을까 싶었는데,
문제는 1행을 제외한 2~n-1행까지(n=입력 값) 별을 두 개만 찍는다는 것이었다.
여기에 if문을 사용해서 처리할 수도 있었겠지만, 문제를 다르게 접근했다.
이미 마지막 행을 따로 코딩할 생각을 하고 있었기때문에, 첫 행도 따로 코딩을 해주기로 한 것이다.
즉, 문제를 세 부분으로 나눠 접근했다.(이런 접근 방식을 Divide & Conquer =분할정복 기법이라고 불렀던 것 같다.)
첫 행, 2~(n-1)행, 마지막 행.
이렇게 접근하니 어렵지 않게 문제가 해결되었다.
딱 하나의 사소한 문제만 빼고...
(n=1, 1을 입력했을 때 마지막 행을 따로 코딩한 부분에서 무시해버려야 하는데 별 하나를 찍어버렸다.)
물론 이런 예외 case를 처리하기 위해 if문 하나를 추가해주면서 간단히 처리할 수 있었다.
겉으로 보기에는 이전 10991번 문제와 굉장히 유사한 출력을 내뱉는데
코딩은 전혀 다르게 하다보니, 참 신기하다.
다른 분들의 풀이도 궁금해서 구글링을 통해 찾아봤는데 if문을 많이 활용하신 분들이 많았는데
결과적으로는 그 분들의 코드가 훨씬 간결해보였다.
Github: https://github.com/jaeuk9407/AlgorithmBOJ
jaeuk9407/AlgorithmBOJ
BaekJoon Online Judge Problems. Contribute to jaeuk9407/AlgorithmBOJ development by creating an account on GitHub.
github.com