포스트

LG CNS 부트캠프 학습일지 13일차

학습 내용

  • Java 기본 문법
  • Loop Label
  • GuessGame 만들기

Loop Label

1
2
3
4
5
6
for (int i = 0; i < 10; i++) {
	for (int j = 0; j < 10; j++) {
		...
		break;
	}
}

위와 같이 중첩된 반복문이 있는 경우를 생각해보자. 만약 안쪽 for문에서 전체 반복문을 나가고 싶을 때는 어떻게 해야할까. 사실 제일 간단한 해결 방법은 중첩된 반복문을 하나의 함수로 만들고, 안쪽 반복문에서 반환을 하는 것이다.

1
2
3
4
5
6
7
8
outer:
for (int i = 0; i < 10; i++) {
	inner:
	for (int j = 0; j < 10; j++) {
		...
		break outer;
	}
}

레이블을 사용하는 방법이 있었다. 처음봤다.

GuessGame 만들기

지금까지 배운 자바 기본 문법을 활용해서 GuessGame을 만들었다. 1부터 100까지 숫자 중에서 프로그램이 임의로 고른 숫자를 사용자가 맞추는 게임이다. 이진탐색트리와 같이 절반씩 나눠가면서 찾으면 되기 때문에 정답을 맞추기는 어렵지는 않다. log2(100) == 10 이기 때문에 이론적으로 10번이면 정답을 맞출 수 있다.

Google의 Gemma 4 E4B를 로컬 AI로 돌리고 있다. 꽤 작은 모델이기 때문에 성능이 좋을 것을 기대하고 있지는 않지만 Claude Code에 물려서 사용하고 있다. 굳이 이것을 언급한 이유는 GuessGame을 이 모델을 사용해서 바이브코딩해보았기 때문이다. LocalLLM으로 바이브코딩을 하기에는 아직 너무 이르다고 생각하고 만족스러운 결과를 얻었던 적이 많이 있지 않은데, 이번에는 꽤 만족스러웠다.

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
40
41
class GuessGame {
	public static final int MAXIMUM_TRIES = 10;
	public static final int MAXIMUM_INPUT = 100;
	public static final int MINIMUM_INPUT = 1;

	private final int answer;
	private boolean hasWon;

	public GuessGame {
		this.answer = new Random().nextInt(MAXIMUM_INPUT) + MINIMUM_INPUT;
		this.hasWon = false;
	}

	public void play {
		Scanner scanner = new Scanner(System.in);
		int guess;

		for (int i = 0; i < MAXIMUM_TRIES; i++) {
			guess = scanner.nextInt();

			if (isCorrectAnswer()) {
				...
				this.hasWon = true;
			}

			if (isGreaterThanAnswer()) {
				...
			}

			if (isLessThanAnswer()) {
				...
			}
		}

		if (hasWon) {
			...
		} else {
			...
		}
	}
}

대략적으로 적어봤다.

결론

강사님이 코딩테스트 이야기도 했는데, 수업 따라가느라 놓치고 있었다. 코딩테스트도 준비해야겠다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

Comments powered by Disqus.