본문 바로가기

BackEnd/Java

[JAVA] 조건문, 반복문을 이용한 문제 풀이 7(출입증)

728x90
반응형

 

목차

                                                                                                                           

1. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 1(윤년 계산기)

2. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 2(주사위 게임)

3. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 3(배수 판별기)

4. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 4(청구 금액 계산기)

5. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 5(다독왕)

6. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 6(피보나치 수)

7. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 7(출입증)

8. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 8(방정식)

9. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 9(숫자 맞추기 게임)

10. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 10(만원의 행복)

11. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 11(은행)

                                                                                                                           

 

 

자바의 조건문, 반복문을 이용한 문제 풀이를 진행해보겠습니다~

 

 

문제 7) 출입증

 

연구소의 출입을 허가하는 출입증이 있다.
연구소는 101호, 102호, 103호, 201호, 202호, 301호의 연구실로 구성되어 있다.
숫자가 큰 호실의 출입증은 해당 숫자보다 작은 호실의 연구실 출입도 허가된다.

예시) 103호 출입증은 101호와 102호의 출입이 허가된다.
또한 202호 출입증은 101, 102, 103, 201호 출입이 허가된다.

출입증에 표기된 호수를 입력하면, 출입 가능한 호실의 리스트를 출력하는 프로그램을 작성하시오.

조건) swtich-case 문을 활용하시오

 

 

👉 출력방법

1. 출입증에 표기된 호수를 입력하시오 → [숫자 입력]
2. 출입 가능한 호실의 리스트를 출력한다

 

 

👉  문제 풀이를 위한 Flow Chart

 


👉  문제 해답 코드

import java.util.Scanner;

public class Pass {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("출입증에 표기된 호수를 입력하세요 : ");
		int pass = sc.nextInt();
		
		int div = pass / 100;
		int per = pass % 100;
		
		switch(div) {
		case 3: System.out.println("301호");
		case 2:
			if(div > 2 || per == 2)
				System.out.println("202호");
			System.out.println("201호");
		case 1:
			if(div > 1 || per == 3)
				System.out.println("103호");
			if(div > 1 || per >= 2)
				System.out.println("102호");
			System.out.println("101호");
		}
		
		sc.close();
	}
}

 

 

👉  코드 해설

1. 입력을 위한 java.util의 Scanner 클래스를 가져온다.
2. 인스턴스 생성 후 양의 정수를 입력받고 변수 pass에 저장한다.
3. 변수 두 개를 선언하고 하나는 나눈 몫, 나머지 하나는 나눈 나머지를 변수로 지정한다.
4. 조건문을 통해 몫이 3인지 확인한다.
 4-1) 참이라면, 301호 ~ 101호까지 출력
5. 조건문을 통해 몫이 2인지 확인한다.
  5-1) 만약, 몫이 2보다 크고, 나머지가 2라면 202~101호까지 출력
  5-2) 거짓이라면, 201~101호까지 출력
6. 조건문을 통해 몫이 1인지 확인한다.
 6-1) 만약, 몫이 1보다 크고, 나머지가 3이라면 103~101호까지 출력
 6-2) 만약, 몫이 1보다 크고, 나머지가 2이라면 102~101호까지 출력
 6-3) 거짓이라면, 101호 출력

 

 

문제 풀이 시 switch-case문을 이용해 내부에 if문을 3번 사용해 원하는 값들을 출력했습니다.

이 문제는 6개의 호수라고 정해져 있기때문에 case로 6가지 호수를 모두 지정한 후 break를 주지 않는 것이 더 좋은 방법 인 것 같네요!

 

혹시나 코드를 보고 좀 더 간단하게 풀이하실 수 있는 분들은 답글 부탁드려요!!!!

 

많은 분들의 피드백은 언제나 환영합니다!  많은 댓글 부탁드려요~~

 

728x90
반응형