본문 바로가기
알고리즘/Class 3

백준 BOJ 1620번

by edvedv 2022. 8. 18.

문제가 당황스러워서 입출력, 예제만 캡쳐했다.


접근 방법

 

HashMap을 사용한다면 어렵지 않은 문제다.

이 문제에서 문자열로 번호를 찾고, 번호로 문자열을 찾기 때문에 문자열과 번호가 서로 연결되어 있어야 한다.

HashMap을 사용해서 하나는 key 값을 문자열, value를 번호로 만들고 다른 하나는 반대로 하면 쉽게 구현할 수 있다.

 

이후 입력받은 줄이 문자열인지 숫자인지만 구분해서 반환해주면 쉽게 해결. 


코드

import java.util.*;

public class Main {
   public static void main(String[] args) {
      Scanner in = new Scanner(System.in);
      int N = in.nextInt();
      int M = in.nextInt();
      HashMap<String, Integer> nameToNum = new HashMap<String, Integer>();
      HashMap<Integer, String> numToName = new HashMap<Integer, String>();
      StringBuilder sb = new StringBuilder();

      for(int i = 1; i <= N; i++){
         String name = in.next();
         nameToNum.put(name, i);
         numToName.put(i, name);
      }
      for(int i = 0; i < M; i++){
         String temp = in.next();
         if(isNum(temp)) sb.append(numToName.get(Integer.parseInt(temp))+"\n");
         else sb.append(nameToNum.get(temp)+"\n");
      }
      System.out.println(sb);
      in.close();
   }
   public static boolean isNum(String str){
      for(int i = 0; i < str.length(); i++){
         if(!Character.isDigit(str.charAt(i))) return false;
      }
      return true;
   }
}

'알고리즘 > Class 3' 카테고리의 다른 글

백준 BOJ 1697번  (0) 2022.08.19
백준 BOJ 1676번  (0) 2022.08.19
백준 BOJ 1541번  (0) 2022.08.18
백준 BOJ 1463번  (0) 2022.08.16
백준 BOJ 1389번  (0) 2022.08.16

댓글