JAVA 백준 15964

김수현·2024년 1월 20일

백준

목록 보기
11/12

개념 부족(StringTokenizer st = new StringTokenizer(br.readLine());/ int와 long생각하고 쓰자)

새삭 함수 - 이상한 기호
15964번 문제
문제
부산일과학고등학교의 효진이는 수학의 귀재이다. 어떤 문제라도 보면 1분 내에 풀어버린다는 학교의 전설이 내려올 정도였는데, 이런 킹ㅡ갓 효진에게도 고민이 생겼다. 대부분의 문제에서 반복되는 연산이 있었기 때문이다! 이 연산은 너무 길어서 종이에 풀던 효진이는 너무 고통스러워서, 자신이 새로 연산자를 만들기로 했다.

연산자의 기호는 @으로, A@B = (A+B)×(A-B)으로 정의내리기로 했다.

하지만, 효진이는 막상 큰 숫자가 들어오자 계산하기 너무 귀찮아졌다.

효진이를 도와 정수 A, B가 주어지면 A@B를 계산하는 프로그램을 만들어주자!

입력
첫째 줄에 A, B가 주어진다. (1 ≤ A, B ≤ 100,000)

출력
첫째 줄에 A@B의 결과를 출력한다.

서브태스크 1 (30점)
A, B ≤ 1,000
서브태스크 2 (70점)
문제에서 주어진 제약 조건 외 제한 없음

예제 입력 1
4 3
예제 출력 1
7
예제 입력 2
3 4
예제 출력 2
-7

import java.io.*;
import java.util.*;

public class HelloWorldApp {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		long a = Long.parseLong(st.nextToken());
		long b = Long.parseLong(st.nextToken());
		System.out.println((a+b)*(a-b));
	}
}
import java.util.Scanner;

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

        // 입력 받기
        long A = scanner.nextLong();
        long B = scanner.nextLong();

        // A@B 계산
        long result = (A + B) * (A - B);

        // 결과 출력
        System.out.println(result);

        // Scanner 닫기
        scanner.close();
    }
}

총정리:
1)
StringTokenizer 클래스는 문자열을 구분자(delimiter)를 기준으로 여러 개의 토큰(token)으로 나누는 데 사용됩니다. 이 클래스는 Java에서 구현된 클래스로, 주로 간단한 문자열 파싱 작업에 활용됩니다.

java
Copy code
StringTokenizer st = new StringTokenizer(br.readLine());
위 코드에서 br.readLine()은 한 줄을 읽어온 후에 그 문자열을 StringTokenizer으로 나누기 위해 사용됩니다. StringTokenizer 객체 st는 이 문자열을 공백을 기준으로 토큰으로 나누는 역할을 합니다.

예를 들어, 입력 문자열이 "100 50"이라면 StringTokenizer를 사용하여 이를 "100"과 "50" 두 개의 토큰으로 분리할 수 있습니다. 이렇게 분리된 토큰들은 각각 st.nextToken()을 통해 차례로 얻을 수 있습니다.

java
Copy code
long a = Long.parseLong(st.nextToken());
long b = Long.parseLong(st.nextToken());
위 코드에서 st.nextToken()을 사용하여 토큰을 읽어오고, Long.parseLong()을 통해 문자열을 long 값으로 변환하여 변수 a와 b에 저장하고 있습니다. 이렇게 하면 입력된 문자열에서 숫자 값을 추출하여 사용할 수 있습니다.

2)
int 사용 경우:

정수가 약 -2,000,000,000부터 2,000,000,000까지의 범위일 때.
메모리 효율적인 경우.
대부분의 상황에서 충분한 범위일 때.
long 사용 경우:

정수가 int 범위를 넘어가는 경우.
더 큰 정수 값이 필요한 경우.
특히 알고리즘 문제에서 범위가 크게 주어질 때.

profile
안녕하세요

0개의 댓글