반응형
Notice
Recent Posts
Recent Comments
Link
It's easy, if you try
[백준/boj] 1755: 숫자 놀이 (Java) / 문자열 / HashMap 본문
반응형
문제
풀이
import java.util.*;
import java.io.*;
public class Main { // class 시작
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 입력 한줄 받아오기
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 출력을 위한 변수
static StringTokenizer st; // 입력을 받아와서 공백 기준으로 분리하기 위한 변수
static int N, M; // N : 시작 숫자 ,M : 끝 숫자
static String[] english = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; // 인덱스 숫자에 따른 영어 초기화
public static void main(String[] args) throws Exception { // main 시작
st = new StringTokenizer(br.readLine()); // 첫 줄을 받아온다.
N = Integer.parseInt(st.nextToken()); // 첫번째 글자는 시작 숫자이다.
M = Integer.parseInt(st.nextToken()); // 두번째 글자는 끝 숫자이다.
char[] temp = new char[2]; // 두자리의 숫자인 경우 2개의 char형 배열로 만든다.
String strTemp=""; // String temp 변수로 16 인 경우 "one six" 가 된다.
String[] result = new String[M-N +1]; // 숫자에서 영어로 변환한 모든 String 변수가 담긴다.
Map<String, Integer> mapTemp = new HashMap<>(); // key: 숫자가 영어로 변환된 String 변수, value: 영어로 변환 전 숫자
for(int i=N; i<=M; i++) { // 시작 숫자부터 끝 숫자까지 1씩 키워간다.
temp = String.valueOf(i).toCharArray(); // 받아온 숫자를 char형 변수 배열로 변환한다.
strTemp = ""; // String temp 변수 초기화
for(int j=0; j<temp.length; j++) { // char형 변수 배열의 길이만큼 반복한다.
strTemp+= english[temp[j]-'0']; // 숫자에 해당하는 영어로 변환해 String 변수에 더한다.
strTemp+= " "; // 한 숫자가 끝나면 공백을 추가한다.
}
mapTemp.put(strTemp, i); // 숫자를 영어로 변환한 값을 key로, 기존 숫자를 value로 담는다.
result[i-N] = strTemp; // 알파벳 기준 오름차순으로 정렬하기 위해 String 배열에 숫자를 영어로 변환한 값을 담는다.
}
Arrays.sort(result); // 알파벳 기준 오름차순으로 정렬
int cnt =0; // 10개가 되면 공백을 출력하기 위한 변수
for(String str: result) { // 정렬된 String을 하나씩 빼온다.
bw.append(mapTemp.get(str)+" "); // mapTemp에서 String이 key인 value(int 값)를 가져와 출력한다.
cnt++; // 하나를 출력했으므로 cnt 1 증가
if(cnt == 10) { // 10개가 출력됐으면
cnt =0; // cnt 0으로 초기화
bw.append("\n"); // 공백 출력
}
}
bw.flush(); // 화면에 나타내기
bw.close(); // 닫기
} // main 끝
} // class 끝
반응형
'알고리즘 > 자바(Java)' 카테고리의 다른 글
[백준/boj] 1043: 거짓말 (Java) / Union-Find (1) | 2021.04.05 |
---|---|
[백준/boj] 2620: 양팔저울 (Java) / DP / 배낭 문제 (0) | 2021.04.02 |
[백준/boj] 14923: 미로 탈출 (Java) / BFS / 3차원 배열 (0) | 2021.03.29 |
[백준/boj] 17472: 다리 만들기 2 (Java) / BFS / 프림 알고리즘(PRIM) / 그래프 (0) | 2021.03.26 |
[프로그래머스] 2017 카카오코드 본선: 단체사진 찍기 (Java) / 순열 / 브루트포스 (0) | 2021.03.25 |
Comments