반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준 알고리즘] 백준 21603번 K 2K 게임 자바(JAVA)

1) 문제번호 : 21603

 

2) 문제 출처

https://www.acmicpc.net/problem/21603

 

21603번: K 2K 게임

싸이컴에서는 신입생의 집중력을 테스트하기 위해 아래와 같은 간단한 게임을 개발했습니다. 두 정수 $N$과 $K$가 주어집니다. 자연수 $x$에 대해 $f(x)$를 $x$의 일의 자리 수라고 할 때, $f(x) \neq f(K)

www.acmicpc.net

 

2. 문제

싸이컴에서는 신입생의 집중력을 테스트하기 위해 아래와 같은 간단한 게임을 개발했습니다.

  • 두 정수 N과 K가 주어집니다.
  • 자연수 x에 대해 f(x)를 x의 일의 자리 수라고 할 때, f(x)≠f(K)이고 f(x)≠f(2K)인 1 이상 N 이하의 정수 x를 오름차순으로 모두 말합니다.

당신은 일의 자리 수를 일일이 계산하기 귀찮기 때문에, 몰래 프로그램을 만들어 게임에서 승리하려고 합니다. 말해야 하는 수의 목록을 모두 출력하는 프로그램을 만들어 봅시다.

 

 

3. 제약사항

 

4. 입력

두 정수 N과 K가 띄어쓰기를 사이에 두고 주어집니다. 

 

5. 출력

첫 줄에는 당신이 말해야 할 수의 개수를 출력합니다.

둘째 줄에는 당신이 말해야 할 수를 한 줄에 모두 출력합니다. 만약 말해야 할 수가 없다면, 둘째 줄은 비워둡니다. 수는 크기 순서대로 출력해야 합니다.

 

 

6. 풀이

- f(x)는 x의 일의 자리라고 했으므로, i%10이 K%10과 다르고, i%10이 (2 * K) % 10과 다르면 List에 넣어서 출력하면 된다.

 

7. 소스 코드

import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine()," ");
		
		int N = Integer.parseInt(st.nextToken());
		int K = Integer.parseInt(st.nextToken());
		
		List<Integer> arr = new ArrayList<>();
		
		
		for(int i = 1; i <= N; i++) {
			if((i%10) != (K%10) && (i%10) != ((2*K)%10)) {
				arr.add(i);
			}
		}
		
		System.out.println(arr.size());
		for(int i = 0; i < arr.size(); i++) {
			System.out.print(arr.get(i) + " ");
		}
	}
}

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기