백준 2588번: 곱셈 (Java/Kotlin)

클로이·2021년 12월 5일
0

알고리즘

목록 보기
1/2
post-thumbnail

문제

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

방법

  • 입력된 숫자를 분리해서 연산해요!
  • 문자열로 입력받아 하나씩 꺼내는 방법이 있어요.
  • 나머지와 나눗셈 연산으로 각 자릿수를 구하는 방법이 있어요.

문자열로 입력받아 하나씩 꺼내는 코드

Java

  • charAt()을 사용해요.
import java.util.Scanner;
 
public class Main {
 
	public static void main(String[] args) {
		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));
 
	}
}

Kotlin

  • 인덱싱을 사용해요.
import java.util.Scanner

fun main() = with(Scanner(System.`in`)){
    
    var a = nextInt()
    var b = next()
    
    println(a * (b[2] - '0'))
    println(a * (b[1] - '0'))
    println(a * (b[0] - '0'))
    println(a * b.toInt())
}

풀이

  • 문자열은 문자들이 모인 배열이라고 봐요.
  • 문자열을 하나씩 꺼내려면 인덱스를 참조하여 해당 문자를 반환해야 해요.
  • 이때 반환되는 값은 아스키코드값인 문자 (char)에요.

아스키코드가 뭐예요?

  • 예를 들어 변수 b가 "385"일 때 b[0]은 문자의 '3'으로 아즈키 코드 51에 해당해요.

-'0' 을 해주는 이유

  • 아즈키 코드로 저장된 숫자가 아닌 우리가 보는 숫자 그대로의 값을 쓰기 위한 것이에요.

나머지와 나눗셈 연산으로 각 자릿수를 구하는 코드

Java

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();
 
		System.out.println(a*(b%10));
		System.out.println(a*(b%100/10));
		System.out.println(a*(b/100));
		System.out.println(a*b);
	}
 
}

Kotlin

import java.util.Scanner
 
fun main() = with(Scanner(System.`in`)){
 
		val a = nextInt()
		val b = nextInt()
 
		println(a*(b%10))
		println(a*(b%100/10))
		println(a*(b/100))
		println(a*b)
}

풀이

  • 일의 자리는 10으로 나눠준 값의 나머지 값이에요.
  • 십의 자리는 100으로 나눠준 값의 나머지를 10으로 나눈 값이에요.
  • 백의 자리는 100으로 나눠준 값이에요.

참고&출처

[백준] 2588번 : 곱셈 - JAVA [자바]

0개의 댓글