반응형
🔺 문제
🔺 코드
- 틀림
import java.util.*;
import java.io.*;
public class Main {
// Map에서 키 가져오기
public static <K,V> K getKey(Map<K, V> map, V value) {
for(Map.Entry<K,V> entry : map.entrySet()) {
if(value.equals(entry.getValue())) {
return entry.getKey();
}
}
return null;
}
// 숫자인지 판별
public static boolean isNumeric(String s) {
try {
Integer.parseInt(s);
return true;
} catch(NumberFormatException e) {
return false;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
Map<String, Integer> map = new HashMap<>();
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
for(int i = 1 ; i <= n ; i++) {
map.put(br.readLine(), i);
}
for(int i = 0; i < m ; i++) {
String str = br.readLine();
if(isNumeric(str)) {
System.out.println(getKey(map, Integer.parseInt(str)));
} else {
System.out.println(map.get(str));
}
}
}
}
답은 맞는데 출력할 때 한 줄 띄어쓰기가 이상하게 된다. 띠용...
답도 멀쩡히 나오는데 띄어쓰기 출력할 때 어디가 잘못된건지 알아보려다 그냥 새로운 방식으로 접근하기로...^^
- 정답
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
Map<String, String> map = new HashMap<>();
for(int i = 1 ; i <= n ; i++) {
String s = br.readLine();
String num = Integer.toString(i);
map.put(s, num);
map.put(num, s);
}
for(int i = 0; i < m ; i++) {
String str = br.readLine();
sb.append(map.get(str)).append("\n");
}
System.out.println(sb);
}
}
✅ 해결 아이디어
- Map<String, String>형으로 받음.
- 맵에 알파벳과 포켓몬 번호를 순서대로 둘 다 넣음.
🔺 다른 풀이들
- 풀이1)
<Integer, String>을 받는 맵 하나와 <String, Integer>로 받는 맵 하나 해서 총 2개의 맵 생성!하셨고
입력받은 문자열이 숫자인지 판별하는 코드도 작성하셨다. (isNumber 메소드)
- 풀이2)
Map은 <String, Integer> 형으로 받으셨고,
받은 문자열이 숫자인지 확인하기 위해 boolean isNumber 메소드를 만드셨다.
💬 느낀 점
Map에 넣고 이러는 건 어렵지 않았데
1) 입력 받을 때 숫자인지 문자인지 구별하는 거랑,
2) Map에서 키를 어떻게 가져올까
이 2가지를 고민하다가 시간이 많이 지체되었다..
그냥 다른 분들 풀이처럼 <String, String>형으로 받아서 둘다 map에 넣어버리면 그만인것을...ㅎㅎ
암튼 넘 어렵게 생각하지 말아야겠다!
(참고)
✔ Character.isDigit() : 문자열 값이 숫자인지 판단
반응형
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 10816번: 숫자 카드 2 (0) | 2023.04.10 |
---|---|
[백준/JAVA] 19532번: 수학은 비대면강의입니다 (0) | 2023.04.09 |
[백준/JAVA] 7785번: 회사에 있는 사람 (0) | 2023.04.06 |
[백준/JAVA] 14425번: 문자열 집합 (0) | 2023.04.06 |
[백준/JAVA] 10815번: 숫자 카드 (0) | 2023.04.06 |