클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

반복문과 배일 그리고 예외 처리 8 - do/while문과 구구단 실습 문제 풀기 본문

프로그래밍 언어/자바

반복문과 배일 그리고 예외 처리 8 - do/while문과 구구단 실습 문제 풀기

huenuri 2024. 8. 11. 18:44

이 내용은 지난번에 기본 학습을 할 때도 하지 않았던 부분인데 오늘 한번 풀어보기로 했다. 반복문의 개념은 이번주에 자바 시험에서 나왔던 문제이기도 하다. 파이썬에서도 비슷한 문제가 출제되었다.

이제 문제를 풀어보며 개념을 좀더 정리하기로 하자.


 

 

 

1. a부터 z까지 출력

do-while 문을 활용하여 a부터 z까지 출력하는 프로그램 작성하기

 

 

 

지난번에 풀 때는 이상하게도 아무리 해봐도 a 한 글자만 출력이 되었는데 이번에는 잘 풀린다. 그때 풀었던 코드를 다시 살펴보니 부등호의 방향이 잘못되어 있었다. z보다 작을 때까지로 조건을 주어야 한다. 그리고 ch 변수는 1씩 증가한 값을 다시 ch에 넣어주는 과정을 반복하도록 한다. 


 

 

 

 

2. 2중 중첩을 이용한 구구단 출력

아침에 구구단을 출력하는 문제를 풀었으나 그때는 가로로 계속 출력하는 풀이였다. 이번에는 간격을 맞추어 출력해보기로 하자.

 

 

 

구구단 문제는 역시 간단하지 않았다. 특히 탭을 사용해서 띄어쓰기를 하는 건 여러 번 코드를 고친 후에 겨우 만들 수 있었다. 처음에는 줄 바꿈을 하는 문장을 한 줄 뒤에 써서 계속 한 줄만 만들어졌다. 책에는 가로가 한 단씩 되어 있지만 난 세로로 만들고 있어서 이렇게 만들어보았다.

이제 특정 단을 입력 받으면 그 단수가 출력되도록 만들어보려고 한다.


 

 

 

 

3. 단 수를 입력 받으면 구구단 출력하기

 

 

2단을 입력했더니 무한히 반복되고 있었다. 무엇이 문제일까?


 

 

 

 

다시 풀어보기

 

 

 

해당 단수만 출력되려면 한 묶음만 되어야 하므로 중첩을 빼주어야 한다. 한 가지 문제를 더 응용해서 풀어보고 싶어졌다. 


 

 

 

4. 시작 단과 끝 단 입력받고 구구단 출력하기

시작 단과 끝 단을 입력 받으면 해당 단이 모두 출력되도록 만들어보려고 한다.

 

첫번째 도전

 

뭐든 한번에는 잘 안되는 것 같다. 처음 할 때는 무한으로 계속 출력이 되더니 이번 코드는 2X3 부분만 나왔다. 


 

 

 

 

다시 풀어보기

 

 

이 문제는 정말 많은 도전 끝에 드디어 푼 문제이다. 정말 어려운 문제이고 변수를 i나 j로 하게 되면 어떤 변수인지 잘 모를 경우가 있어 j를 단으로 바꾸었다. dan은 2, 3, 4 같은 단수를 의미한다. 탭을 사용해서 출력하는 건 정말 어려워서 몇 번이나 코드를 바꾸며 풀었는지 모른다.

이 문제는 굉장히 어려운 문제이므로 다음에 다시 한번 풀어보며 복습해보려고 한다. 지금도 완전히 이해하지는 못했다.

 


 

 

 

학습을 마치고

책에 있는 예제 나머지를 풀어보려고 했는데 수업 예제로 푼 문제들과 비슷해서 생략해도 될 것 같았다. 대신 구구단 문제를 여러 유형으로 풀어볼 수 있어서 정말 좋았다.

이제 while 문 나머지 문제를 더 풀어보고 쉬어볼 생각이다.