It's going to be one day 🍀

안녕하세요! 매일 매일 공부하려고 노력하는 백엔드 개발자 지망생의 공부 흔적입니다.

코테 준비/백준

[백준] 입출력과 사칙연산 중요 내용

2jin2 2024. 1. 18. 22:52

https://github.com/drinkgalaxy/coding-practice

 

GitHub - drinkgalaxy/coding-practice: This is a auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https:

This is a auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - GitHub - drinkgalaxy/coding-practice: This is a auto push reposito...

github.com

 

1000. A+B

- 자바에서 사용자 입력 받는 법 (Scanner)

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // scanner 선언
        Scanner sc = new Scanner(System.in);
        // 사용자 입력
        System.out.printIn("정수를 입력하세요")
        int A = sc.nextInt();

 

sc.nextInt() : 정수 입력

sc.nextLine() : 문자열 입력

sc.nextFloat() : 실수 입력

sc.nextBoolean() : true/false 입력

-> Scanner의 next~() 메소드를 이용하여 사용자로부터 입력받은 내용을 반환함. 다른 타입도 가능.

 

2588. 곱

이 문제는 첫 번째 입력으로 오는 세 자리수 정수에 두 번째 입력으로 들어오는 정수를 분리하여 각각 곱한 값을 출력해줘야한다. 그러려면

1. 두 번째 입력을 String으로 받아야 한다.

이때 sc.nextLine로 하면 에러가 난다. 이유는 nextInt()로 입력을 받기 때문에 개행문자 전까지만 입력을 받고 개행문자(\n)는 다음 nextLine이 읽었기 때문이다. 공백을 읽었기 때문에 에러가 난 것이다.

-> 따라서 sc.next()로 읽으면 에러가 나지 않는다. next()는 개행문자를 무시하고 입력을 받기 때문이다.

 

2. 345 연산을 위해 String으로 받은 배열 안의 숫자들을 Int로 바꾸어 계산해야한다.

이때 charAt()을 이용해서 문자열의 인덱스 위치에 있는 문자값을 반환한다.

주의할 점은 이때 참조하는 해당 문자의 아스키코드는 문자형이다. 실제 숫자가 아니다.

따라서 문자열 인덱스를 참조한 뒤 -'0' 을 하는 작업을 거쳐야한다.

 

3. 마지막 연산을 위해 두 번째 입력 자체를 Int로 바꾸어 계산해야한다.

이때 Integer.parseInt()을 사용하면 문자열을 int형으로 바꾸어준다.

import java.util.Scanner;

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

        int A = sc.nextInt();
        String B = sc.next();

        sc.close();

        System.out.println(A * (B.charAt(2) - '0'));
        System.out.println(A * (B.charAt(1) - '0'));
        System.out.println(A * (B.charAt(0) - '0'));

        System.out.println(A * Integer.parseInt(B));
    }
}

 

11382. 꼬마 정민

sc.nextInt()로 정수값을 받으려 했더니 런타임 에러가 발생했다. 로컬에서는 잘 동작하는데 백준에서는 에러가 발생했다.

에러가 발생한 이유는 문제의 조건 때문이다.

10의 12승은 int의 범위를 벗어나기 때문에 오류가 난다. (int은 약 10의 9승까지의 범위이다.)

따라서 크기가 더 큰 long형을 사용하면 된다. -> nextLong();

import java.util.Scanner;

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

        long A = sc.nextLong();
        long B = sc.nextLong();
        long C = sc.nextLong();

        System.out.println(A+B+C);

    }
}

 

-> nextLong()을 사용할 땐 앞에 long으로 정의해줘야한다.

 

10171. 고양이

자바에서 \와 ' " 은 문자 그 자체만으로 출력되지 않는다. 이를 출력하기 위해선

\ -> \\

' -> \'

" -> \"

위와 같은 작업을 진행해야한다.

 

단계별로 풀어보기 입출력 끝 ~

'코테 준비 > 백준' 카테고리의 다른 글

[백준] 정렬  (0) 2024.04.22
[백준] 스택과 큐  (1) 2024.04.18
[백준] 배열  (1) 2024.02.14
[백준] 반복문  (0) 2024.01.24
[백준] 조건문  (0) 2024.01.22