728x90
자바
N의 배수 번호인 양을 셀 때 0~9까지 수를 모두 볼 수 있을 때 최소 양을 센 횟수
처음엔 양을 센 횟수라길래 입력 N=1295일 때 5N번째에 6475번 양을세고 그러면 0~9까지 다 볼 수있다.
여기서 나는 5가 정답으로 나와야되는 수인 줄 알았는데 6475번 을 구하눈 거였음. 아무튼 간단 !
나는 str문자열에 0~9까지의 숫자를 넣어놓고 N의 배수대로 진행하면서 한 자리씩 잘라서 그 문자열이 str에 있었다면 !로 대체해버리고 그 반복은 str문자열이 !!!!!!!!!!이 아닐 때 계속
* 헷갈렸던 거는 number.replace(c,"!")를 해서 c로 하나씩 잘려진 숫자가 number에 있으면 !로 바꾸는 메소드를 사용했는데 바뀌질 않았다 !! 알고보니 number = number.replace(c,"!");를 해줬어야됐다. 변경한 사항을 다시 number 변수에 저장 !
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
/*
사용하는 클래스명이 Solution 이어야 하므로, 가급적 Solution.java 를 사용할 것을 권장합니다.
이러한 상황에서도 동일하게 java Solution 명령으로 프로그램을 수행해볼 수 있습니다.
*/
public class Solution
{
public static void main(String args[]) throws Exception
{
//System.setIn(new FileInputStream("C:\\so_Project\\workspace\\BaekJoon\\src\\algorithm\\input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine()); //테스트 케이스
for(int i=1;i<=T;i++) { //하나의 테스트케이스마다 반복
int num = Integer.parseInt(br.readLine());
int count = 0;
int n=1;
String number = "0123456789";
String str = "";
while(!number.equals("!!!!!!!!!!")) {
str = Integer.toString(num*n);
count ++;
for(int j=0;j<str.length();j++) {
String c = Character.toString(str.charAt(j));
if(number.contains(c)) {
number = number.replace(c,"!");
}
}
n++;
}
System.out.println("#"+i+" "+str);
}//하나의 테스트 케이스 끝
}
}
나는 문자열로 입력을 받아 문자로 잘라서 0~9가 담긴 문자열에 나온 문자를 !로 대체하는 방식으로 했는데
다른 풀이를 찾아보니까 set자료형을 사용했다.
set은 순서가 없고 데이터의 중복을 허용하지 않는 집합.
그리고 입력받은 수를 10으로 나눈 나머지를 그 set에 넣기 시작함. => 자릿수마다 쪼개서 중복없이 set에 넣고 그 set의 size()가 9초과이면 반복 종료
728x90
'알고리즘 > Samsung' 카테고리의 다른 글
정렬 알고리즘 (0) | 2023.05.18 |
---|---|
SW 14413. 격자판 칠하기 (BFS) (1) | 2023.05.14 |
SW 1928. Base64 Decoder (0) | 2023.05.05 |
SW 1940. 가랏! RC카 ! (0) | 2023.05.05 |
SW 1285. 아름이의 돌 던지기 (0) | 2023.05.05 |