본문 바로가기
알고리즘/[프로그래머스] JAVA

[코딩 기초 트레이닝] 전국 대회 선발 고사 | HashMap

by 코딩맛집 2024. 2. 13.

문제 :

https://school.programmers.co.kr/learn/courses/30/lessons/181851

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

해결 :

import java.util.HashMap;
import java.util.Collections;
import java.util.ArrayList;

class Solution {
    public int solution(int[] rank, boolean[] attendance) {
        HashMap<Integer, Integer> map = new HashMap<>();
        ArrayList<Integer> list = new ArrayList<>();

        for(int i = 0; i<rank.length; i++){
            map.put(rank[i], i);
            if(attendance[i]) list.add(rank[i]);
        }
        
        Collections.sort(list);
        
        int a = map.getOrDefault(list.get(0), 0);
        int b = map.getOrDefault(list.get(1), 0);
        int c = map.getOrDefault(list.get(2), 0);
        
        int answer = a*10000 + b*100 + c;
        return answer;
    }
}

1. HashMap 자료형의 map 변수에 랭킹 순위와 인덱스를 키와 값으로 준다.

2. 랭킹 순위를 정렬하기 위해 순서가 존재하는 list 자료형의 list 변수를 만들어, 참여 가능한 조건일 때 list 변수에 랭킹 순위 값을 넣어준다.

3. list 변수를 정렬한다.

4. map변수에서 list의 인덱스로 1~3 순위로 선발된 랭킹 순위의 값을 가져온다.

5. 값을 계산하여 반환해준다.

 

getOrDefault(Object key, Value DefaultValue)

   - 찾는 키가 존재하다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드

  • key : 값을 가져오는 키
  • DefaultValue : 키로 매핑된 값이 없을 경우 반한되는 기본 값

 

다른 사람 풀이 :

import java.util.Comparator;
import java.util.stream.IntStream;

class Solution {
    public int solution(int[] rank, boolean[] attendance) {
        return IntStream.range(0, rank.length)
                .filter(i -> attendance[i])
                .boxed()
                .sorted(Comparator.comparing(i -> rank[i]))
                .limit(3L)
                .reduce((current, next) -> current * 100 + next)
                .get();
    }
}

rank 길이만큼 스트림 생성 -> attendance로 필터링 -> Stream로 변환 -> 정렬 기준을 rank로 정렬 -> 낮은 숫자 3개 선정 -> 100을 곱하고 다음 항목을 더하면서 차원 감소 -> int로 get

 

공부 :

HashMap 이란? 궁금하다면 자세한 내용은 하단 링크 ↓ ↓ ↓ ↓ ↓ ↓  

https://my-archiver.tistory.com/202

 

HashMap

HashMap의 특징 Key : Value 로 이루어진 자료형. Key는 고유한 값으로 중복이 허용되지 않는다. value는 중복이 가능하다. 순서가 없는 자료 구조. 메소드들 HashMap map = new HashMap(); map.put(1, "jina"); map.put(2,

my-archiver.tistory.com