쵼쥬
쵼쥬의 개발공부 TIL
쵼쥬
전체 방문자
오늘
어제
  • 분류 전체보기 (276)
    • 코딩테스트 (192)
      • [알고리즘] 알고리즘 정리 (7)
      • [백준] 코딩테스트 연습 (126)
      • [프로그래머스] 코딩테스트 연습 (59)
    • Spring (71)
      • [인프런] 스프링 핵심 원리- 기본편 (9)
      • [인프런] 스프링 MVC 1 (6)
      • [인프런] 스프링 MVC 2 (4)
      • [인프런] 실전! 스프링 부트와 JPA 활용1 (7)
      • [인프런] 실전! 스프링 부트와 JPA 활용2 (5)
      • [인프런] 실전! 스프링 데이터 JPA (7)
      • [인프런] 실전! Querydsl (7)
      • JWT (5)
      • [인프런] Spring Cloud (17)
      • [인프런] Spring Batch (4)
    • Java (6)
      • [Java8] 모던인자바액션 (4)
      • [부스트코스] 웹 백엔드 (2)
      • [패스트캠퍼스] JAVA STREAM (0)
    • CS (6)
      • 디자인 패턴과 프로그래밍 패터다임 (2)
      • 네트워크 (4)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • BFS
  • jpa
  • 스프링
  • 구현
  • 위클리 챌린지
  • 인프런
  • Spring Data JPA
  • 누적합
  • MVC
  • 코딩테스트
  • 프로그래머스
  • 부스트코스
  • 자바
  • 백준
  • querydsl
  • 알고리즘
  • 백분
  • 타임리프
  • spring
  • 비트마스킹

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쵼쥬

쵼쥬의 개발공부 TIL

보석 쇼핑
코딩테스트/[프로그래머스] 코딩테스트 연습

보석 쇼핑

2022. 3. 4. 09:20


풀이 방법

투포인터 방법을 이용해서 풀이했다.

set으로 등장하는 보석의 갯수를 구해주고 포인터를 이동하면서 map을 이용해서 보석의 갯수를 세어준다.

start 포인터가 이동하면 map에서 갯수를 줄여주고 end 포인터가 이동하면 map에 갯수를 증가시켜주었다.

 

내 코드

import java.util.*;

class Solution {
    public int[] solution(String[] gems) {
        int[] answer = {100000, 100000};
        HashSet<String> set = new HashSet<>(Arrays.asList(gems));
        HashMap<String, Integer> map = new HashMap<>();

        int size = set.size();
        int start = 0;
        int end = 0;
        int count = 100000;

        while (true) {
            if (map.size() == size) {
                map.put(gems[start], map.get(gems[start]) - 1);
                if (map.get(gems[start]) == 0)
                    map.remove(gems[start]);

                start++;
            } else if (end == gems.length) {
                break;
            } else {
                map.put(gems[end], map.getOrDefault(gems[end], 0) + 1);
                end++;
            }
            if (map.size() == size) {
                if (end - start < count) {
                    answer[0] = start + 1;
                    answer[1] = end;
                    count = end - start;
                }
            }
        }

        return answer;
    }
}

'코딩테스트 > [프로그래머스] 코딩테스트 연습' 카테고리의 다른 글

미로탈출  (0) 2022.05.06
경주로 건설  (0) 2022.03.04
2 x n 타일링  (0) 2021.12.29
124 나라의 숫자  (0) 2021.12.28
구명보트  (0) 2021.11.23
    '코딩테스트/[프로그래머스] 코딩테스트 연습' 카테고리의 다른 글
    • 미로탈출
    • 경주로 건설
    • 2 x n 타일링
    • 124 나라의 숫자
    쵼쥬
    쵼쥬

    티스토리툴바