본문 바로가기
프로그래밍 언어/java

24.03.26 java 백준 문제 풀이 -입출력과 사칙연산

by 피스타0204 2024. 3. 26.

 

 

입출력과 사칙연산 단계

입출력과 사칙연산

www.acmicpc.net

 

#2588

 

내 풀이 

python에서 유사한 문제를 풀었던 기억이 났다. 나누기(/)과 나머지(%) 연산을 이용하여 자릿수를 구하는 문제라고 해석하여 아래와 같이 풀이했다.

import java.util.Scanner;
public class Main
{
	public static void main(String[] args) {
	    Scanner in = new Scanner(System.in);
	    int b = in.nextInt();
	    int a = in.nextInt();
	    int l,m,n;
	    l = (a%10)*b;
	    m = ((a/10)%10)*b;
	    n = ((a/100)%10)*b;
		System.out.println(l);
        System.out.println(m);
        System.out.println(n);
	    System.out.println(l+m*10+n*100);
	    
	}
}

 

Scanner 로 입력을 받으면 시간이 오래걸리니 더 성능이 좋은 bufferedReader 을 이용하여 짤 수도 있다.

 

 

charAt(i)를 사용한 풀이 - 대중적인 풀이

자바는 string 객체를 제공하는 언어이다. string은 iterator를 사용할 수 있기 때문에 for반복문과 charAt(i)를 사용하여 보다 큰 숫자도 계산할 수 있을 것으로 보인다.

 

아래 풀이는 가장 대중적이라는 풀이다. 전체를 곱해야 할 A는 int로 받고 쪼개서 사용할 B는 string으로 받아 사용한다. 문자열.charAt(i)는 문자열의 i번째 문자를 char로 반환한다. 또, 문자는 숫자와 동일하게 취급하므로 B.charAt(0)을 숫자A에 곱하면 자동 변환되어 int형으로 바뀐다. 아스키코드 숫자가 아닌 실제 숫자로 바꾸기 위해 '0'을 빼주었다.

객체인 string은 int형으로 바로 변환될 수 없으므로 Integer.parseInt(문자열)해주었다.

import java.util.Scanner;
 
public class Main {
 
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
 
		int A = in.nextInt();
		String B = in.next();
        
		in.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));
 
	}
}

 

charAt(i) 풀이를 이용해 자릿수 상관없이 곱셈하는 법을 아래 접은글에 적어놓았다. 

더보기
import java.util.Scanner;
 
public class Main {
 
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
 
		int A = in.nextInt();
		String B = in.next();
        
		in.close();
 
		for (int i=B.length()-1; i>-1;i--){
		    System.out.println(A * (B.charAt(i) - '0'));
		}
		System.out.println(A * Integer.parseInt(B));
 
	}
}

 

아래 사이트에서 다른 2가지 풀이를 더 볼 수 있다.

 

참고 : https://st-lab.tistory.com/20

 


#11382

int 형이 아닌 long 형을 이용해야 한다는 오류가 있다. 실제 자바에서 int형은 32byte로 21억까지 표현할 수 있다.

import java.util.Scanner;
 
public class Main {
 
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		Long A = in.nextLong();
		Long B = in.nextLong();
		Long C = in.nextLong();
		System.out.print(A+B+C);
 
	}
}

 

 

 

 

'프로그래밍 언어 > java' 카테고리의 다른 글

백준#2839  (0) 2024.05.11
24.04.04 #25314 stringBuilder  (0) 2024.04.04