[12/31] 백준 JAVA - #1008, #1330, #2438, #2475, #2557

주원·2024년 12월 31일

알고리즘

목록 보기
2/6
post-thumbnail

#1008

문제

내 정답

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        double A = sc.nextDouble();
        double B = sc.nextDouble();
        
        System.out.println(A/B);
        
        sc.close();
    }
}

나눗셈의 결과가 실수형으로 나와야하기 때문에 입력값 중 하나 이상을 double로 변환여 입력받아야한다.


#1330

문제

내 정답

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        
        int A = sc.nextInt();
        int B = sc.nextInt();
        
        sc.close();
        
        if(A>B) System.out.println(">");
        else if(A<B) System.out.println("<");
        else System.out.println("==");
  
       
        
    }
}

내가 사용한건 if-else 방식인데,
해당 문제의 조건은 간단하기에
삼항 연산자를 사용해도 괜찮았겠다는 생각을 해보았다.

조건식 ? 참일 때의 값 : 거짓일 때의 값;

System.out.println(A > B ? ">" : (A < B ? "<" : "=="));
  1. A>B 먼저 평가
  • true면 ">" 반환
  • false면 내부 삼항 연산자로 이동
  1. A<B 평가
  • true면 "<" 반환
  • false면 "==" 반환

#2438

문제

내 정답

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        int num = sc.nextInt();
        sc.close();
        
        for (int i=1; i<=num; i++) {
            for (int j=1; j<=i; j++) {
                System.out.print("*");
            }
            System.out.println();
            
        }
    }
}

for문의 기본 구조

for (초기화; 조건식; 증감식) {
// 반복 실행할 코드
}

외부 반복문에서 사용된 i는 현재 줄 번호를 나타내는 반면,
내부 반복문에서의 j는 현재 줄에서 몇 개의 별을 출력할지를 결정하기에
j와 같은 추가적인 변수가 필수적이다.

[결론]

  • j 없이는 각 줄마다 다른 개수의 별을 출력할 수 없다.
  • j는 각 줄에서 별의 개수를 조절하는데 필요하다.
  • i와 j는 독립적인 역할을 수행하며, 서로 협력해 원하는 출력 형식을 만든다

#2475

문제

내 정답

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        
        Scanner sc = new Scanner(System.in);
        
        int A = sc.nextInt();
        int B = sc.nextInt();
        int C = sc.nextInt();
        int D = sc.nextInt();
        int E = sc.nextInt();
        
        System.out.println((A*A+B*B+C*C+D*D+E*E)%10);
        
        sc.close();
        
        

    }
}

내가 제출한 정답은 각 입력을 개별 변수로 받아 계산하기에 비효율적인 편이다.
다른 분들의 정답을 보니,
for 반복문으로 코드를 단순화할 수 있는 방법이 있었다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int sum = 0;

        for (int i = 0; i < 5; i++) {
            int num = sc.nextInt();
            sum += num * num;
        }

        System.out.println(sum % 10);
        sc.close();
    }
}

i=0부터 시작해서 i<5까지, 총 5번 반복이 실행된다.

  • 각 반복에서 sc.nextInt()를 통해 정수 하나를 입력받아 num에 저장한다.
  • 입력받은 숫자의 제곱값을 계산한 뒤, sum에 더한다.

누적 과정 :
(1) sum = 0 + (1번째 입력값의 제곱)
(2) sum = (1번째 입력값의 제곱) + (2번째 입력값의 제곱)
...
(5) sum = (1번째 입력값의 제곱) + (2번째 입력값의 제곱) + (3번째 입력값의 제곱) + (4번째 입력값의 제곱) + (5번째 입력값의 제곱)


#2557

문제

내 정답

public class Main{
    public static void main(String[] args){ 
        System.out.println("Hello World!");
      
    }
}

입력받는 값이 없다는 점에 유의하자 !

0개의 댓글