"SWEA 1288 새로운 불면증 치료법"의 두 판 사이의 차이

잔글
9번째 줄: 9번째 줄:
<source lang='cpp'>
<source lang='cpp'>
#include<iostream>
#include<iostream>
using namespace std;
using namespace std;
int main(int argc, char** argv)
int main(int argc, char** argv)
{
{
int test_case;
int test_case;
int T;
int T;
/*
아래의 freopen 함수는 input.txt 를 read only 형식으로 연 후,
앞으로 표준 입력(키보드) 대신 input.txt 파일로부터 읽어오겠다는 의미의 코드입니다.
//여러분이 작성한 코드를 테스트 할 때, 편의를 위해서 input.txt에 입력을 저장한 후,
freopen 함수를 이용하면 이후 cin 을 수행할 때 표준 입력 대신 파일로부터 입력을 받아올 수 있습니다.
따라서 테스트를 수행할 때에는 아래 주석을 지우고 이 함수를 사용하셔도 좋습니다.
freopen 함수를 사용하기 위해서는 #include <cstdio>, 혹은 #include <stdio.h> 가 필요합니다.
단, 채점을 위해 코드를 제출하실 때에는 반드시 freopen 함수를 지우거나 주석 처리 하셔야 합니다.
*/
//freopen("input.txt", "r", stdin);
cin >> T;
cin >> T;
/*
for (test_case = 1; test_case <= T; ++test_case) {
여러 개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
*/
for (test_case = 1; test_case <= T; ++test_case)
{
int arr[10] = { 0 };
int arr[10] = { 0 };
int answer = 0;
int answer = 0;
/////////////////////////////////////////////////////////////////////////////////////////////
int input;
int input;
scanf("%d", &input);
scanf("%d", &input);
int N = input;
int N = input;
for (int i = 0; ; i++) {
for (int i = 0; ; i++) {
int temp = N;
int temp = N;
while (N != 0) {
while (N != 0) {
48번째 줄: 29번째 줄:
int count = 0;
int count = 0;
for (int j = 0; j<10; j++) {
for (int j = 0; j<10; j++) {
if (arr[j] == 1)
if (arr[j] == 1) count++;
count++;
}
}
if (count == 10) {
if (count == 10) {
55번째 줄: 35번째 줄:
break;
break;
}
}
else
N = input * i;
N = input * i;
}
}
printf("#%d %d\n", test_case, answer);
printf("#%d %d\n", test_case, answer);
/////////////////////////////////////////////////////////////////////////////////////////////
}
}
return 0;//정상종료시 반드시 0을 리턴해야합니다.
return 0;
}
}
</source>
</source>

2019년 6월 23일 (일) 17:06 판

1 개요

SSWEA 1288 새로운 불면증 치료법
SW Expert 아카데미
# 문제 풀이

틀:SWEA 난이도 2-3

2 C++

#include<iostream>
using namespace std;
int main(int argc, char** argv)
{
	int test_case;
	int T;
	cin >> T;
	for (test_case = 1; test_case <= T; ++test_case) {
		int arr[10] = { 0 };
		int answer = 0;
		int input;
		scanf("%d", &input);
		int N = input;
		for (int i = 0; ; i++) {
			int temp = N;
			while (N != 0) {
				arr[N % 10] = 1;
				N /= 10;
			}
			int count = 0;
			for (int j = 0; j<10; j++) {
				if (arr[j] == 1) count++;
			}
			if (count == 10) {
				answer = temp;
				break;
			}
			N = input * i;
		}
		printf("#%d %d\n", test_case, answer);
	}
	return 0;
}

3 Java

import java.util.*;
public class Solution {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T;
		T=sc.nextInt();

		int N, i, cur, temp, q;
		Set<Integer> seen = new HashSet<Integer>();

		for(int test_case = 1; test_case <= T; test_case++) {
			N = sc.nextInt();
			seen.clear();
			for(i=1; ; i++) {
				cur = N*i;
				for(temp=cur; temp>0; temp/=10) {
					q = temp%10;
					seen.add(q);
				}
				if(seen.size()>9) break;
			}
			System.out.format("#%d %d\n", test_case, cur);
		}
		sc.close();
	}
}
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}