백준 10430
나머지

 

 

 

 

첫째줄에 A,B,C 순서대로 선언해주고 출력 계산법 따라 printIn() 하기

 

 

[내가 쓴 정답]

import java.util.Scanner;

public class Main {

	public static void main(String[] args){
		
		Scanner sc = new Scanner(System.in);
		
		int A,B,C;
		
		A = sc.nextInt();
		B = sc.nextInt();
		C = sc.nextInt();
		
		System.out.println((A+B)%C);
		System.out.println(((A%C) + (B%C))%C);
		System.out.println((A*B)%C);
		System.out.println(((A%C)*(B%C))%C);
		
		sc.close();
	}

}

 

 

[BufferedReader]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String str = br.readLine();
		StringTokenizer st = new StringTokenizer(str," ");
		
		int a = Integer.parseInt(st.nextToken());
		int b = Integer.parseInt(st.nextToken());
		int c = Integer.parseInt(st.nextToken());
		
		System.out.println( (a+b)%c );
		System.out.println( ((a%c)+(b%c))%c );
		System.out.println( (a*b)%c );
		System.out.println( ((a%c)*(b%c))%c );
	}
}

 

readLine() 은 한 줄을 입력받아 읽는다 

그 한 줄을 읽는데 공백단위로 구분하기 위해 StringTokenizer 을 쓰고 

Integer.parseInt(st.nextToken());을 하여 String을 int형으로 바꿔준다 

 


 

백준 2588
곱셈

 

 

 

 

어려워보여도 풀어보니 간단! (두가지 풀이가 있음)

 

 

A와 B를 곱하는데  (3) A * (B의 일의자리) , (4) A * (B의 십의자리) , (5) A * (B의 백의자리) , (6) A * B 

곱한 3,4,5,6 을 출력하면 된다. 

 

어떻게?

1. B의 385 를 3,8,5 나눠서  A와 곱해준다

 

 

 

** 백준 10869 문제에서 참고하자면 몫은 / , 나머지는 % 였다.

 

  • B의 일의 자리 

 B%10   ▶   (385/10 = 나머지 5)

 

 

  • B의 십의 자리

(B/10)%10  ▶   ( 385/10 = 몫 38 , 38/10 나머지 8)

 

 

  • B의 백의자리

B/100  ▶   (385/100 = 몫 3)

 

 

 

B의 각 자리수와 A와 곱해서 출력하면 끝!

 

 

 

 

[나의 정답]

import java.util.Scanner;

public class Main {

	public static void main(String[] args){
		
		Scanner sc = new Scanner(System.in);
		
		int A,B;
		
		A = sc.nextInt();
		B = sc.nextInt();
		
		// 3,4,5,6 값
		System.out.println(A*(B%10)); 		// 472 * 5
		System.out.println(A*((B/10)%10));  // 472 * 8
		System.out.println(A*(B/100));		// 472 * 3
		System.out.println(A*B);
		
		sc.close();
	}

}

 

 

 

 

 

2. 또 다른 풀이는 charAt() 을 써보자

 

A는 int로 B는 String 으로 입력받아보자

 

charAt()

인덱스 번호를 넣어서 각 자리수를 참조해준다. 

 

B.charAt(0) 을 하면 B의 문자열에서 0번째에 있는 문자를 char타입으로 변환한다

여기서 중요한 점 B = "385" 에서 인덱스 0번인 3 을 반환하는데 숫자가 아니라 문자 3 이다!

 

그리고 문자에서  -'0' 을 해줌으로서 숫자로 출력이 된다

 

마지막으로 (6) A * B 할때 숫자와 문자열이 곱해지면 문자열이 되니까 B를  Integer.parseInt() 을 써서 int로 형변환을 한다

 

 

[두번째 풀이 나의 정답]

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();  //nextLine() 을 쓰면 런타임에러
		
		sc.close();
		
		System.out.println(A * (B.charAt(2) - '0')); //B의 일의자리
		System.out.println(A * (B.charAt(1) - '0')); //B의 십의자리
		System.out.println(A * (B.charAt(0) - '0')); //B의 백의자리
		System.out.println(A * Integer.parseInt(B));
	}

}

주의! String B = sc.nextLine() 을 쓰면 런타임에러가 뜬다

nextLine()은 한 줄을 통째로 입력받는 메서드라서?

 

 


 

백준 10171
고양이

 

 

 

 

백슬래쉬는 \  단독으로 출력이 불가능한 문자이다. 

백슬래쉬 \ \  두개 붙여줘야하고 출력했을때 \ 한개로 나온다.

 

 

[출력이 잘못되었습니다] 

public class Main {

	public static void main(String[] args){
		
		System.out.println("\\    /\\");
		System.out.println(" )   ( ')");
		System.out.println("(   /  )");
		System.out.println(" \\(__)|");
	}

}

직접 입력해도 안되고 

public class Main {

	public static void main(String[] args){
		
		System.out.println("\\    /\\\r\n"
				+ " )  ( ')\r\n"
				+ "(  /  )\r\n"
				+ " \\(__)|");
	}

}

예제출력 복사해서 ("") 안에 복붙했는데도 출력이 잘못됐다고 한다

 

 

???? 

 

 

1. StringBuffer 사용하기

public class Main {

	public static void main(String[] args){

		StringBuffer sb = new StringBuffer();
		
		sb.append("\\    /\\\n");
		sb.append(" )  ( ')\n");
		sb.append("(  /  )\n");
		sb.append(" \\(__)|");
		
		System.out.println(sb);
	}
}

 

\n 을 해주는 이유는 다음 줄로 넘기기 위해 (이것을 개행이라고 한다.)

 

 

 

2. StringBuilder 사용하기

public class Main {
	public static void main(String[] args){
 
		StringBuilder sb = new StringBuilder();
		sb.append("\\    /\\\n");
		sb.append(" )  ( ')\n");
		sb.append("(  /  )\n");
 		sb.append(" \\(__)|\n");
		
		System.out.println(sb);
	}
}

 

 

쉬운줄 알았는데 아니었다 StringBuffer , StringBuilder  외우자

 

 

 


 

백준 10172

 

 

고양이와 똑같은 문제다 StringBuffer, StringBuilder  사용가능

 

1. StringBuilder 를 사용

public class Main {

	public static void main(String[] args){

		StringBuilder sb = new StringBuilder();
		
		sb.append("|\\_/|\n");
		sb.append("|q p|   /}\n");
		sb.append("( 0 )\"\"\"\\\n");
		sb.append("|\"^\"`    |\n");
		sb.append("||_/=\\\\__|\n");
		
		System.out.println(sb);
	}
}

\n을 써서 개행하기 ( \\n 아님! ) 

 

 


 

백준 25083
새싹

 

 

public class Main {

	public static void main(String[] args){

		StringBuilder sb = new StringBuilder();
		
		sb.append("         ,r'\"7\n");
		sb.append("r`-_   ,'  ,/\n");
		sb.append(" \\. \". L_r'\n");
		sb.append("   `~\\/\n");
		sb.append("      |\n");
		sb.append("      |\n");
		
		System.out.println(sb);
	}
}

 

 

 

반응형
LIST

+ Recent posts