본문 바로가기
알고리즘/Samsung

SW 1288. 새로운 불면증 치료법

by son_i 2023. 5. 5.
728x90

SW Expert Academy

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

자바

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