영드로이드개발자
용이의 개발블로그
영드로이드개발자

블로그 메뉴

  • ⭐️ Home
  • 💻 GitHub
  • ❤️ Instagram
  • 👍 LinkedIn
  • 분류 전체보기 (44)
    • 공지사항 (1)
    • Daily 공부방 (0)
    • 프로그래밍 언어 (8)
      • Java (7)
      • Kotlin (1)
    • 안드로이드(Kotlin) (16)
    • 코딩테스트(Java) (11)
      • 기초 자료구조 (3)
      • 백준 (0)
      • 프로그래머스 1단계 (5)
      • 프로그래머스 2단계 (3)
    • 알고리즘 정리 (5)
    • 주간 목표계획 및 회고 (2)
    • Project (1)
      • Android App - 오마이코인 (1)

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
영드로이드개발자

용이의 개발블로그

[프로그래머스] 달리기 경주 -  JAVA
코딩테스트(Java)/프로그래머스 1단계

[프로그래머스] 달리기 경주 - JAVA

2024. 2. 27. 17:35
반응형

문제

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

 

프로그래머스

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

programmers.co.kr

입출력

 

 

이 문제는 역시 프로그래머스 1단계 문제로써 문제에 적힌 조건만 잘 이핸다면 어렵지 않게 문제를 해결할 수 있는 문제이다.

나는 Map 을 이용하여 해당 플레이어의 등수를 저장하였고, 추월 할때마다 추월당한 플레이어, 추월한 플레이어의 등수를 서로 바꿔주도록 코드를 짰는데 더 좋은 아이디어나 방법이 있으면 공유 부탁드린다. ^^

 

 

import java.util.*;


class Solution {


    public static void main(String[] args) {
        String[] players = {"mumu", "soe", "poe", "kai", "mine"};
        String[] callings = {"kai", "kai", "mine", "mine"};
        System.out.println(Arrays.toString(solution(players, callings)));
    }


    static public String[] solution(String[] players, String[] callings) {
        String[] answer = new String[players.length];

        HashMap<String, Integer> map = new HashMap<>();

        for (int i = 0; i < players.length; i++){
            map.put(players[i], i);
        }

        for (int i = 0; i < callings.length; i++){
            // 추월 하는 Player = callings[i]
            int calledPlayer = map.get(callings[i]); // 추월하는 Player 의 현재 등수

            // 추월 당한 Player
            String tempPlayer = players[calledPlayer - 1];

            players[calledPlayer - 1] = callings[i];
            players[calledPlayer] = tempPlayer;

            map.put(players[calledPlayer],calledPlayer);
            map.put(callings[i],calledPlayer - 1);
        }

        // 등수는 같을 수 없기에 Set을 이용하여 Key 추출
        Set<Map.Entry<String, Integer>> entrySet = map.entrySet();

        for (Map.Entry<String, Integer> entry : entrySet) {
            for (int i = 0; i < players.length; i++){
                if (entry.getValue().equals(i)){
                    answer[i] = entry.getKey();
                }
            }
        }
        return answer;
    }
}

느낀점

해당 문제 같은 경우는 딱히 어려운 부분은 없었고 Map 에서 해당 Value를 갖는 Key를 추출할때 어떻게 추출하는지 한번 다시 정리하면 좋을것 같다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'코딩테스트(Java) > 프로그래머스 1단계' 카테고리의 다른 글

[프로그래머스] 크레인 인형뽑기 게임 - JAVA  (0) 2024.02.28
[프로그래머스] 개인정보 수집 유효기간 - JAVA  (0) 2024.02.27
[프로그래머스] 공원 산책 - JAVA  (1) 2024.02.27
[프로그래머스] 가장 많이 받은 선물 - JAVA  (2) 2024.02.27
    '코딩테스트(Java)/프로그래머스 1단계' 카테고리의 다른 글
    • [프로그래머스] 크레인 인형뽑기 게임 - JAVA
    • [프로그래머스] 개인정보 수집 유효기간 - JAVA
    • [프로그래머스] 공원 산책 - JAVA
    • [프로그래머스] 가장 많이 받은 선물 - JAVA
    영드로이드개발자
    영드로이드개발자
    도전을 즐기는 안드로이드 개발자 현영우의 개발 Blog

    티스토리툴바