[코드스쿼드 코코아 과정] 백준 2438번 문제

Kyu·2020년 11월 6일
0

2438번 문제 링크

첫번째 시도

일단 어떻게 해야할지 몰라서 입력한 정수만큼 별이 나오도록 했다. 별이 점점 늘어나게 하려면 어떻게 해야할까? 요구사항을 충족시키려면 같은 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();
	}

}

두번째 시도

검색을 통해 concatappend 라는 키워드를 얻었다. 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();
	}

}
profile
TIL 남기는 공간입니다

0개의 댓글