일단 이것저것 해 보는 블로그

(Do it! 자바 1주차-1) 04장 되새김 문제 06~18 풀이 본문

2026/Do it Java 스터디(2026.01.~02.)

(Do it! 자바 1주차-1) 04장 되새김 문제 06~18 풀이

뷔구룽 2026. 1. 8. 21:50

개요

1주차 기록

(1주차) 자바 입문과 기초 문법 (251230~260106)

 

(1주차) 자바 입문과 기초 문법 (251230~260106)

개요원래 1월 5일부터 스터디 시작이지만, 호기심을 참지 못하고 전자책을 조금 일찍 구매해 공부를 시작했다.이번 글에는 그 1주차, 첫 시작에 대해 간략히(?) 기록해본다.1주차는, 자바 개발 환

gyeonkangkim.tistory.com

 

지난번 별찍기와 반복문 지옥으로 차마 손대지 못했던 04장의 나머지 되새김 문제를 풀고 나름대로 풀이과정을 달아보겠다.

 

사용한 학습 자료: 박은종, 2025, <Do it! 자바 프로그래밍 입문 [개정판]>, 이지스퍼블리싱.

https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415

 

Do it! 자바 프로그래밍 입문 [개정판] | 박은종 저자

eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인

ebook-product.kyobobook.co.kr

 

실습 코드 (17번 문제 제외)

https://github.com/KimGyeonkang/DoitJava_Studying_2026/commit/969be7acf9d7d181134a387e9c99787b5e53a134

 

Solve more question in Day5 · KimGyeonkang/DoitJava_Studying_2026@969be7a

+ * 케이스-> 1층 약국, 2츨 정형외과, 3층 피부과, 4층 치과, 5층 헬스 클럽, default 사용하지 않는 층

github.com

 

정답과 풀이 (코드 실습 문제 제외)

(06번)

문제의 조건에 따라 의사 코드를 작성해보면
변수: gender 선언 = '한 문자'

gender가 F이면
  출력: 여성입니다.
gender가 F가 아니라면(그렇지 않다면)
출력: 남성입니다.
 -----------
char gender = 'F'

1) (if) (gender 2) (== 'F')) { // =와 == 혼동 주의!
System.out.println("여성입니다.");
} // gender가 F이면

3) (else) {
System.out.println("남성입니다.");
} // 그렇지 않다면

 

따라서, 1) if, 2) == 'F', 3) else

(09번)
보기를 알기 쉽게 정리하면

 

(변수 grade에 대해)
스코어가 90점 이상이면
A 출력
그렇지 않으면
B 출력


=> (조건 연산자 사용) grade = (score >= 90) ? 'A' : 'B';

* 조건 연산자: A ? B : C -> 조건 A가 참이면 B, 거짓이면 C를 취함.
(11번)

의사 코드

// 1부터 50까지 더하는 프로그램
int num = 1; // 더하는 수
int sum = 1; // 합계

더하는 수가 50 이하인 동안 반복할 것
합계에 수를 더하고
더하는 수를 1씩 증가 // 반복 수행

출력("1부터 50까지의 합은" + 합계 + "입니다.")

 

따라서 빈칸 1) while 2) num++

(12번)
*for (초기화식 ; 조건식 ; 증감식) { }

문제: num이 1부터 10이 될 때까지 num값을 증가하며 반복한다.

=> 1) (초기화식) num = 1, 2) (조건식) num <= 10, 3) (증감식) num++

(15번)
문제: 1부터 100까지 수 중에 3의 배수만 출력하는 코드

* 3의 배수 -> 3으로 나누었을 때 나머지가 0

 

문제에 따라 정리한 의사 코드

int num; // 수를 담을 변수

1부터 시작해 100이 될 때까지 출력할 수를 증가하며 반복
(수가 3의 배수일 때)
출력
/* 위 문장의 의미는 다음과 같이 해석할 수 있다.
(수가 3의 배수가 아닐 때)

반복을 수행하지 않기(continue); */
수 출력;
종료

 


따라서, 1) for문의 초기화식 - num = 1, 2) for문의 조건식 - num <= 100, 3) if문의 조건문 - num % 3 != 0

(16번)

문제: 1부터 시작해서 1씩 숫자를 늘려 더했을 때 그 합이 500이 넘는 순간 마지막으로 더한 자연수 구하기

 

의사 코드

합계를 담을 변수(처음에는 0으로 초기화)
더하는 수를 담을 변수 선언

더하는 수에 관한 반복문 (1부터 시작해서 더하는 수를 1씩 계속 증가시키기 - 조건문은 따로 적지 않음)
처리: 합계 = 합계 + 더하는 수
*** 합계가 500이 넘는 순간
반복문 수행 종료

합계 출력
마지막으로 더한 수 출력

 

위를 토대로 코드로 옮겨보면

 

int sum = 0; // 합계 = 0
int num; // 더하는 수

for (num = 1; ; num++) {
    sum += sum + num;
    if (sum > 500) // 합계가 500이 넘는 순간 
    break; // 반복문을 빠져나가기
}
System.out.println(sum); // 합계 출력
System.out.println(num); // 마지막으로 더한 수 출력

 

* 참고: 출력 결과
528 // 합계
32 // 마지막으로 더한 수
// 1부터 31까지 더한 값: 31 * (31+1) / 2= 496
// 1부터 32까지 더한 값: 32 * (32+1) / 2 = 528

따라서, 빈칸 1) for문의 증감식 - num++, 2) if (sum > 500), 3) break;