(Java) 백준 1620 - 나는야 포켓몬 마스터 이다솜

2022. 6. 10. 07:17·코딩 테스트

문제 설명이 좀.. .길다...

그냥 위에는 읽지않고 입출력 부분만 보고 풀었다.

Map을 사용하면 간단하게 풀수 있는 문제이다.

다만 이 문제도 n과 m이 100,000까지 들어올 수 있어서 시간초과가 날수있다.

처음에는 HashMap을 하나만 생성해서 숫자가 입력되면 key값으로 value를 찾고

문자면 keySet을 반환해서 value로 key를 찾았다. 다만 keySet으로 반환해서

탐색하는 시간이 걸려서 시간 초과가 났다.

그래서 그냥 HashMap을 2개 생성해서 풀었다.


실패 코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws Exception {
        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());

        HashMap<Integer, String> hm1 = new HashMap<>();
        
        for (int i = 1; i < n + 1; i++) {
            String st = br.readLine();
            hm1.put(i, s);
        }


        for (int i = 0; i < m; i++) {
            String s = br.readLine();
            if (s.chars().allMatch(Character :: isDigit)) {
                sb.append(map.get(Integer.parseInt(s))).append("\n");
            } else {
                for(int key : map.keySet()) {
                    String value = map.get(key);
                    if(value.equals(s)) {
                        sb.append(key).append("\n");
                    }
                }
            }
        }
        System.out.println(sb);
    }
}

 

최종 코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws Exception {
        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());

        HashMap<Integer, String> hm1 = new HashMap<>();
        HashMap<String, Integer> hm2 = new HashMap<>();

        for (int i = 1; i < n + 1; i++) {
            String s = br.readLine();
            hm1.put(i, s);
            hm2.put(s, i);
        }
        for (int i = 0; i < m; i++) {
            String temp = br.readLine();
            // 숫자인지 판별
            if (temp.chars().allMatch(Character :: isDigit)) {
                sb.append(hm1.get(Integer.parseInt(temp))).append("\n");
            } else {
                sb.append(hm2.get(temp)).append("\n");
            }
        }
        System.out.println(sb);
    }
}

'코딩 테스트' 카테고리의 다른 글

(Java) 프로그래머스 카카오 프렌즈 컬러링북  (0) 2022.06.12
(Java) 프로그래머스 수식 최대화  (0) 2022.06.11
(Java) 백준 1764 - 듣보잡  (0) 2022.06.09
(Java) 백준 1697 - 숨바꼭질  (0) 2022.06.08
(Java) 백준 7569 - 토마토  (0) 2022.06.08
'코딩 테스트' 카테고리의 다른 글
  • (Java) 프로그래머스 카카오 프렌즈 컬러링북
  • (Java) 프로그래머스 수식 최대화
  • (Java) 백준 1764 - 듣보잡
  • (Java) 백준 1697 - 숨바꼭질
로승리
로승리
  • 로승리
    Roy's Blog
    로승리
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Issuefy
      • Language
      • Spring
      • Database
      • Network
      • Kubernetes
      • AWS
      • 코드스쿼드
      • 코딩 테스트
      • 생각정리
      • 국비지원
      • 회고
      • 컨퍼런스, 세미나
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
로승리
(Java) 백준 1620 - 나는야 포켓몬 마스터 이다솜
상단으로

티스토리툴바