Study/알고리즘

백준 1225번 - 이상한 곱셈 JAVA

토기발 2022. 8. 10. 00:05

 

이 문제는 보자마자 어떻게 풀어야 할지 감이 왔다. 그동안 charAt로 입력받은 문자열에서 한글자씩 떼기를 반복하기도 했고, 구구단 문제처럼 풀면 되겠거니 감이 왔기 때문이다.

그런데.....

쩝.....

사실 세번째부터는 이상한 실수를 해서 그렇게 된 것이지만, 두번째까지는 다른 문제가 있었다.

입력에 10,000자리를 넘지 않는 음이 아닌 정수 라고 적혀있는데, 10000까지의 정수가 아니라 저 자리의 정수라서 매우 큰 수이다. 그래서 숫자라도 int대신 long을 써줘야 한다.

 

 


 

 

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws Exception{
		String A, B;
		Scanner in = new Scanner(System.in);
		A = in.next();
		B = in.next();
		long result = 0; //int로 쓰면 출력초과가 되어 long으로 수정 
		for(int i=0; i<A.length(); i++) {	
			for(int j=0; j<B.length(); j++) {
				result += Long.parseLong(A.charAt(i)+"") * Long.parseLong(B.charAt(j)+"");
				//char+""으로 String으로 변환한다
				//출력 초과 문제때문에 Long으로 변환한다
			}	
		}
		System.out.println(result);
	}
}

 

char를 String으로 변경하는 방법은 .toString()이나 .valueOf() 만 알고 있었는데 +""로 간편하게 바꾸는 법을 알게 되었다.

그런데 찾아보니 이런식으로 변환하는 방식은 속도가 위에 쓴 것들에 비해 느리다고 한다.... 빠른 속도가 필요없을 때만 쓰는게 좋을듯 하다. ㅎㅎ 

'Study > 알고리즘' 카테고리의 다른 글

백준 1267번 - 핸드폰 요금 JAVA  (0) 2022.08.20
백준 1233번 - 주사위 JAVA  (0) 2022.08.11
1193번 - 분수찾기 JAVA  (0) 2022.08.05
백준 1173번 - 운동 JAVA  (0) 2022.08.04
백준 1259번 - 팰린드롬수 JAVA  (0) 2022.08.02