백준 2588번 문제(곱셈)

2024. 4. 15. 14:14백준

백준 곱셈 문제를 풀어보았습니다.

백준 2588번 문제

 

방법은 크게 정리해서 4가지입니다.

 

방법1 Scanner를 값을 입력받아서, charAt를 써서, String형에서 char형으로 바꿔서 구현하는 방법

방법2  산술 연산으로 구하는 방법

방법3 BufferReader를 써서 방법2와 비슷하게 구현하는 방법

방법4 BufferReader를 써서 append로 구현하는 방법

 

 

방법 1

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Scanner;

public class CodingTest {
	public static void main(String[] args) throws IOException{
		//값 입력하기
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt(); // 입력 받은 값 중 한 가지를 num으로 지정해서 받음
		String num2 = sc.next();//입력 받은 값 중 나머지 한가지를 num2로 지정 받음 
		
		//곱셈 과정 출력 부분
		System.out.println(num * (num2.charAt(2) - '0')); 
		System.out.println(num * (num2.charAt(1) - '0'));
		System.out.println(num * (num2.charAt(0) - '0'));
		
		// 최종 결과 값
		System.out.println(num * Integer.parseInt(num2));		
	}
}


방법 1 풀이 과정

1. 값을 입력 받아야 하기 때문에 Scanner 객체를 생성해야합니다.

2. 그리고, 입력 받은 값을 받기 위해서 변수 2개를 생성합니다.

-> 변수 2개를 생성할 때는 하는 값을 선택하지 않아도 되는 int형과 

예를 들어서, 385를 입력하면 385 중에서 3을 선택할 지, 8을 선택할지 코드로 정해줘야 하는데, 그 역할을 charAt가 해주 기때문에, num2는 String 자료형을 지정했습니다.

3.문제 (3), (4), (5)를 출력하는 코드를 작성한 후, 최종 결과를 만들면 위와 같은 코드가 작성됩니다.

 

charAt에 대해서 정리한 자료입니다.

https://kim-kang-hyun.tistory.com/19

 

(java) charAt란?

1. charAt란? String 타입의 데이터(문자열)에서 i번째 문자를 char 타입으로 변환할 때 사용하는 메소드 "HELLO" 라는 문자열을 입력받았다고 할 때, Scanner sc = new Scanner(System.in);// HELLO 입력 String str = sc.n

kim-kang-hyun.tistory.com

실행 결과

 

 

방법 2

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Scanner;


/**==============================*
 * 작성자 : kimga
 * 작성일 : 2024. 4. 14.
 * 파일명 : CodingTest.java
 *프로그램 설명 :
 *==============================**/

/**
 * @author kimga
 *
 */
public class CodingTest {
	public static void main(String[] args) throws IOException{
		//값 입력하기
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt(); // 입력 받은 값 중 한 가지를 num으로 지정해서 받음
		int num2 = sc.nextInt();//입력 받은 값 중 나머지 한가지를 num2로 지정 받음 
		sc.close();
		
		
		//곱셈 과정 출력 부분
		
		System.out.println((num2%100)%10*num);
		System.out.println((num2%100)/10*num);
		System.out.println(num * (num2/100)); 
		
		// 최종 결과 값
		System.out.println(num *(num2));	
		
		

	}
}

실행 결과

 

방법2 풀이 과정은 다소 비슷하지만, 약간 방법1과는 다릅니다.

 

방법 1과 다른 점

 

1.num2는 값을 선택할 때, charAt가 아닌 산술 연산을 해서 값을 구하기 때문에, int로 자료형을 바꾼 것 입니다.

산술 연산의 과정은,

문제에서 요구한 (3)을 구하기 위해서는 num2는 일의 자리 수인 5가 되야합니다. 

 

그래서 ,

 

num2를 100으로 나눈 나머지를 다시 10으로 나누면, 일의 자리 수가 5가 나옵니다.

또, num2를 100으로 나눈 몫을 다시 10으로 나누면, 십의 자리 수인 8이 나옵니다.

또, num2를 100으로 나누면 백의 자리 수 3이 나옵니다.

이렇게 해서, (3), (4), (5)에 해당하는 수를 출력하게 됩니다.

다른 숫자를 입력해도, 아래와 같이 나옵니다.

 

방법3

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main{
    public static void main(String[] args) throws IOException{
    	
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	int A = Integer.parseInt(br.readLine());
    	int B = Integer.parseInt(br.readLine());
    	
    	StringBuilder b = new StringBuilder();
    	    	
    	int num1 = ((B%100)%10)*A;
    	int num2 = ((B%100)/10)*A;
    	int num3 = (B/100)*A;
    	int num4 = A*B;
    	
    	System.out.println(num1);
    	System.out.println(num2);
    	System.out.println(num3);
    	System.out.println(num4);
    }
}

 

방법 2와 비슷하게 해서,

BufferReader를 이용해서 코드를 짠 방법 입니다.

 

방법4

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class BufferedReader{
    public static void main(String[] args) throws IOException{
    	
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	int A = Integer.parseInt(br.readLine());
    	int B = Integer.parseInt(br.readLine());
    	
    	StringBuilder b = new StringBuilder();
    	    	
    	b.append(((B%100)%10)*A);
    	b.append('\n');
    	b.append(((B%100)/10)*A);
    	b.append('\n');
    	b.append((B/100)*A);
    	b.append('\n');
    	b.append(A*B);

    	System.out.println(b);
    }
}

풀이과정 BufferReader를 이용해서, append를 이용해서 결과를 출력하는 코드입니다.

 

 

아래는 백준 URL 링크입니다.

https://www.acmicpc.net/problem/2588

 

2588번: 곱셈

첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

www.acmicpc.net

 

2. 코드 관련해서 공부하면 좋은 개념들을 정리한 블로그입니다.

 

https://kim-kang-hyun.tistory.com/18

 

(Java) nex() 시리즈

kim-kang-hyun.tistory.com

https://kim-kang-hyun.tistory.com/17

 

int 와 Integer의 차이

1. Wrapper Class 와 Primitive 자료형의 차이 Java 는 데이터를 클래스와 객체 외에 기초 타입을 가진다. 따라서 Java 는 (1) 기본형 타입(Primitive 자료형) 과 (2) 객체 참조(클래스) 로 두 가지 타입의 관리

kim-kang-hyun.tistory.com

 

https://kim-kang-hyun.tistory.com/19

 

(java) charAt란?

1. charAt란? String 타입의 데이터(문자열)에서 i번째 문자를 char 타입으로 변환할 때 사용하는 메소드 "HELLO" 라는 문자열을 입력받았다고 할 때, Scanner sc = new Scanner(System.in);// HELLO 입력 String str = sc.n

kim-kang-hyun.tistory.com

 

'백준' 카테고리의 다른 글

백준 2884 (알람 시계)  (0) 2024.04.17