본문 바로가기
Computer Science/Algorithm

[JAVA] 곱셈

by soro.k 2022. 2. 22.

https://st-lab.tistory.com/20?category=827050 

 

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

https://www.acmicpc.net/problem/2588 2588번: 곱셈 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다. www.acmicpc.net 문제 매우 간단한 문제다! 3개의 풀이 방법을 제시한다. 이..

st-lab.tistory.com

*해당 포스팅은 상단에 링크된 포스팅을 바탕으로 개인 공부 목적을 위해 작성되었으므로 자세한 내용은 위 링크를 확인해 주시기 바랍니다.


방법

1. 문자열로 입력 받아 charAt()으로 하나씩 꺼내 쓰기

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

String으로 입력 받은 문자열에서 자릿수에 맞는 문자를 꺼내 해당 문자에 해당하는 아스키코드 값에서 '0(=80)'을 뺄셈하여 본연의 숫자값을 가져와 사용한다.

 

2. 나머지와 나눗셈 연산으로 각 자릿수를 구하기

이렇게 계산하신 걸 보면 쉬워보이는데 정작 나는 생각해 내지 못한 수학적인 접근법이었다. 각각의 백, 십, 일의 자리를 나머지 연산을 통해서 얻어온 후에 계산하는 방법이다.

 

3. 문자열을 character 배열로 한 자리씩 넣어주기

char[] b = B.toCharArray();
			
System.out.println(A * (b[2]-'0'));
System.out.println(A * (b[1]-'0'));
System.out.println(A * (b[0]-'0'));

JAVA API 중 하나인 toCharArray() 메소드로 문자열을 char 배열 형태로 변환하여 각 인덱스에 맞는 아스키 코드 값에서 1번처럼 '0'으로 뺄셈하여 본연의 숫자값을 가져와 사용한다. 

 

 


 

더보기

위 블로그를 참고하며 개선된 점

1. 성능에 대한 고민없이 무지성으로 사용했던 Scanner클래스가 아닌 BuffredReader와 StringBuilder클래스에 익숙해진 것.

2. 성능에 대해 고민해 보게 된 것. 단순한 입출력 문제들이었지만 그 속에서도 성능에 대해 고민하게 되면서 내가 짜는 코드들에 대해 자연적으로 성능적인 부분에서 좀더 생각하게 되는 계기가 됐다.

3. 정말 좋았던 건 아무 생각없이 쉬운 문제라고 넘기지 않고 그 속에서 배울 수 있는 것들을 배울 수 있었다는 점이다.

 

'Computer Science > Algorithm' 카테고리의 다른 글

[JAVA] 빠른 A+B  (0) 2022.03.02
[JAVA] 주사위 세 개  (1) 2022.03.01
[JAVA] 나머지  (0) 2022.02.22
[JAVA] A + B  (0) 2022.02.14
[JAVA] 고양이  (0) 2022.02.12