(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
472
385
2360
3776
1416
181720
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int A = Integer.parseInt(br.readLine());
String B = br.readLine();
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'));
System.out.println(A*Integer.parseInt(B));
}
}
내가 풀고싶었던 방식이 있었는데 어떻게 코드를 작성해야 할지 감이 안와서 결국 구글링의 도움을 받아서 풀었다.
첫번째 숫자는 그냥 숫자로 받고, 두번째는 한자리씩 끊어서 받으면 될 것 같았는데 그걸 도저히 어떻게 해야하는지 내 생각으로는 split 밖에 안떠오르는데 구분할 기준이 없고 해서 정말 고민고민했다.
답은 일단 문자열로 받고 문자열을 문자의 배열로 나누기! 이것도 분명히 배운건디 그것도 완전 초반쯤에 배운건데 안쓰니까 까먹었다..
또 -’0’은 왜 해야하는건지도 의문이었는데(구글링 후 아스키코드 때문인가 싶었음) 내가 정리해둔 벨로그 보니 이것도 예전에 공부해서 작성해둔 내용이었다..^.^
공부 게으르게 하지 않기..ㅎㅎ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int A = Integer.parseInt(br.readLine());
int B = Integer.parseInt(br.readLine());
System.out.println((B%10)*A);
System.out.println((B/10)%10*A);
System.out.println((B/100)*A);
System.out.println(A*B);
}
}
이건 둘 다 숫자로 받고 사칙연산으로 푸는 방식! 두 방식 중 어느 것이 더 성능이 좋을지(메모리나 시간 면에서) 궁금해서 둘 다 제출해봤는데 비슷했음!