이 문제는........별찍기 규칙을 유추해내야하는 건데 내가 유추한 규칙으로 코드를 작성해서
제출하니 계속 실패가 나왔다.
혹시 하드코딩으로 해서 실패하는 건가 싶었는데 내가 규칙을 잘 못파악한 것이었다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //콘솔에서 입력받을 경우
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(bf.readLine().trim());
if(n<=4){
for(int i=0;i<n;i++){
if(n%4==1){
bw.write("*\n");
}
else if(n%4==2){
bw.write("* \n");
bw.write(" *\n");
}
else if(n%4==3){
bw.write("* *\n");
bw.write(" *\n");
}
else if(n%4==0){
bw.write("* *\n");
bw.write(" * *\n");
}
}
}
else {
for(int j=0;j<n;j++){
for(int i=0;i<n/4;i++){
bw.write("* *\n");
bw.write(" * *\n");
}
if(n%4==1){
bw.write("*\n");
}
else if(n%4==2){
bw.write("* \n");
bw.write(" *\n");
}
else if(n%4==3){
bw.write("* *\n");
bw.write(" *\n");
}
else if(n%4==0){
bw.write("* *\n");
bw.write(" * *\n");
}
}
}
bw.flush();
bf.close();
bw.close();
}
}
난 이런 단순한 규칙인 줄 알았는데
알고보니
입력한 수가 홀짝에 따라 다른데
1. 모든 줄은 입력한 n의 두배인 2n개의 줄이 나와야하고
2. for문은 2n번이 도는데 i의 값이 홀짝에 따라 별을 찍는 위치가 다르다
3. i가 홀수인경우 *부터 먼저 찍고 j는 i만큼반복하는데(2n번 만큼의 for문 안에 n번의 for문이 돈다)
4. i가 홀수 >> j가 홀수일때 "*", 짝수일때" "
5. i가 짝수 >> j가 홀수일때 " ", 짝수일때 "*"
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class qn10996{
public static void main(String[] args) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //콘솔에서 입력받을 경우
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(bf.readLine().trim());
for(int i=1;i<=n*2;i++){
for(int j=1;j<=n;j++){
if(i%2 == 0){
if(j%2 == 0)
bw.write("*");
else bw.write(" ");
}
else{
if(j%2 == 0)
bw.write(" ");
else bw.write("*");
}
}
bw.write("\n");
}
bw.flush();
bf.close();
bw.close();
}
}
확실히 이전코드와 다르게 단순하고 깔끔하다 ㅜ
다른사람들 코드와 비교하면 나는 규칙도 파악못하고 코드도 간결하지 못하다.....
노력많이 해야겠다...
'study > baekJun' 카테고리의 다른 글
[백준2446/자바/for문/별찍기]백준2446 별 찍기-9 (0) | 2020.05.14 |
---|---|
[백준2523/별찍기/for문/자바]백준2523 별찍기-13 (0) | 2020.05.14 |
[백준10817/자바/for문/if문]백준10817 세 수 (0) | 2020.05.13 |
[백준5543/자바] 백준5543 상근날드 (0) | 2020.05.12 |
[백준/자바/java/while]백준 1110 더하기 사이클 (0) | 2020.04.09 |