일단 어떻게 해야할지 몰라서 입력한 정수만큼 별이 나오도록 했다. 별이 점점 늘어나게 하려면 어떻게 해야할까? 요구사항을 충족시키려면 같은 String 타입의 변수를 이어붙여야한다고 생각해서 좀 더 폭넓은 생각을 위해서 +
이외에 어떤식으로 할 수 있을까 검색을 했다.
import java.util.Scanner;
public class P2438 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
String star = "*";
for ( int i = 1; i <= N; i++) {
System.out.println(star);
}
sc.close();
}
}
검색을 통해 concat
과 append
라는 키워드를 얻었다. concat이 바로 사용하기 편리 할 것 같아서 concat을 사용해보기로 했다. 이전 star
변수에다가 또 다른 별을 붙여주면 되겠거니 생각하고 star = star.concat(star);
라는 코드가 만들어졌다. 그런데 실행해보니 2의 제곱으로 별이 늘어나는 걸 볼 수 있었다. 당황을 감추고.. 이 코드의 로직이 어떻게 돌아가는지 손코딩해봤더니 곧장 왜 그런지 알 수 있었다. 굳이 설명은 안하겠다.
import java.util.Scanner;
public class P2438 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
String star = "*";
for ( int i = 1; i <= N; i++) {
System.out.println(star);
star = star.concat(star);
}
sc.close();
}
}
처음에 좀 더 폭넓은 시각을 가지려고 스트링끼리 어떻게 더할 수 있는지 다른 방법들을 찾아봤었다. 근데 결론은 필요가 없었다. 내가 알고 있던 +
로도 충분했다. 어떻게 하면 문제를 풀 수 있을까? 이전 별 갯수의 딱 하나의 별만 추가하면 되는데...라고 계속 되내어 생각했다. 그러다 변수가 아니라 고정된 한 개의 별의 값(상수)이 있으면 되겠다고 생각하고 해결되버렸다. 추가적으로 +=
연산자를 써서 깔끔하게 보이도록 했다.
import java.util.Scanner;
public class P2438 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
String star = "*";
for ( int i = 1; i <= N; i++ ) {
System.out.println(star);
star += "*";
}
sc.close();
}
}