CODING TEST/programmers

Day1 - a와 b 출력하기

iamyuunzo 2025. 7. 8. 08:34

📌 문제 정보

- 문제 이름 : 코딩 기초 테스트 - a와 b 출력하기

- 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/181951

 

 

📌 문제 요약

핵심 조건: 각 수를 a, b 입력받아 출력하는 코드 작성

- 시간복잡도 제한: - 100,000  a, b ≤ 100,000

 

 

📌 내 풀이 및 코드

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();

        System.out.printf("a = %d\n", a);
        System.out.printf("b = %d", b);
    }
}

 

 

📌 다른 사람들 풀이

//1
System.out.println("a = "+a +"\n" +"b = "+b);

//2
System.out.println("a = " + a);
System.out.println("b = " + b);
sc.close();

//3
while(true){
            if(a < -100000) {
                a = sc.nextInt();
                continue;
            }

            if(b > 100000) {
                b = sc.nextInt();
                continue;
            }

            break;
        }

        System.out.print("a = " + a +"\nb = " + b);

<-- 다른 풀이 요약 -->

- 1 : 직관적임. (단순 문자열 덧셈에서 쉽지만, 복잡한 포맷에는 불편하다는 단점이 있음.)

- 2 : printf는 C언어 스타일 포맷이라 출력 형식을 직접 제어할 수 있지만 Java에서는 ln을 더 많이 씀.
     (+ 연산자로 자동 형변환됨 (a가 int → 문자열로), %는 안 맞으면 런타임 에러가 날 수 있으니 단순 연결에선 ln 쓰기.)

- 3 : 입력값 허용 범위 검증의 차이. 내 코드는 조건이 있든 없든 그냥 넘어가지만, 위의 코드는 조건을 만족하지 않으면 무한 루프를 돌면서 강제로 올바른 값만 받게 함. (조금 복잡한 감이 있지만 코드 검증 로직으로 안정성 때문에 실무에서 선호하는 코드!)



📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

** sc.close()를 마지막에 써야 하는 이유. **

- 리소스(자원) 누수를 막기 위해서.. (자원을 붙잡아두면 아직도 프로그램 쓰는줄 알고 쌓이면서 느려지거나 에러 날 수 있음.)

- 코딩테스트에서는 close()를 안 써도 알아서 JVM이 닫아주긴 하지만 습관적으로 닫아두면 실무에 안전해서 좋음.