반복문 역시 아직은 브론즈 단계라 그런지 크게 어려운 것은 없었다.
대부분 for문 while문을 사용하여 끝내면 되는 문제들이였고 해당 조건만 잘 맞춰주면 크게 문제 없이 풀 수 있었다.
생각이 필요했던 문제는
2439번 -별찍기 2 (브론즈 4) 였는데
어떤 방법으로 할지 고민하다가 다음과 같이 코드를 구현하였다.
import java.util.*;
import java.io.*;
class Main{
public static int n;
public static String s="";
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
n = Integer.parseInt(br.readLine());
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i; j++) {
s += " ";
}
for (int k = 1; k <= i; k++) {
s+="*";
}
bw.write(s);
bw.newLine();
bw.flush();
s= "";
}
bw.close();
br.close();
}
}
전체 출력할 행만큼 for을 돌리는데 행값 - 현재행만큼 공백을 추가하고 행 번호 만큼 *을 추가하여 만들어진 문자열을 출력하는 방식으로 구현하였다.
String의 repeat를 사용하여 구현할 수도 있는 문제였는데 다시 생각해보면 단일 for문을 사용하는 repeat 방식이 더 좋지 않았나 생각해 본다.
다음은 repeat로 구현했을때의 코드이다.
for(int i = 1; i <= n; i++) {
System.out.println(" ".repeat(n - i) + "*".repeat(i));
}
코드를 보면 로직 자체는 동일한데 공백 (" ")을 입력 받은 행의 - i만큼 출력하고 "*"문자를 i만큼 반복하는 형태이다.
단일 for문을 사용하는 만큼 속도면에서 좀 더 좋지 않았을까 생각해 본다.
'JAVA > 코딩 테스트' 카테고리의 다른 글
백준 문제 풀이 - 문자열 단계 (0) | 2023.08.14 |
---|---|
백준 문제 풀이 - 1차원 배열 단계 - 10811번 바구니 뒤집기 (0) | 2023.08.12 |
백준 문제 풀이 - 1차원 배열 단계 - 5579번 과제 안 내신 분...? (0) | 2023.08.11 |
백준 문제 풀이 - 조건문 단계 (0) | 2023.08.08 |
백준 문제 풀이 - 입출력과 사칙연산 단계 (0) | 2023.08.07 |