Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Skipalong's tistory

240319 TIL - 달리기경주 본문

TIL

240319 TIL - 달리기경주

Skipalong 2024. 3. 20. 01:59

오늘은 프로그래머스 알고리즘 풀이 달리기 경주를 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/178871

 

프로그래머스

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

programmers.co.kr

이 문제는 현재 순위를 나타내는 배열과 앞의 한 사람을 추월한 사람의 이름이 담긴 배열이 주어지면 최종 순위를 반환해야 하는 문제이다.

 

import java.util.*;

class Solution {
    public String[] solution(String[] players, String[] callings) {
        String[] answer = new String[players.length];
        Map<String, Integer> rank = new HashMap<>();
        
        for(int i=0; i<players.length; i++) {
            rank.put(players[i], i);
            answer[i] = players[i];
        }
        
        for(String calling : callings) {
            String passed = answer[rank.get(calling) -1];
            int callingRank = rank.get(calling);
            
            rank.put(passed, callingRank);
            answer[callingRank-1] = calling;
            
            rank.put(calling, callingRank-1);
            answer[callingRank] = passed;
        }
        
        return answer;
    }
}

처음에는 이중 for문을 통해 players 배열의 순위를 바꾸어주었는데 주어진 문제는 연산해야하는 크기가 큰 케이스가 있어서 시간 초과문제로 실패를 했었다.

그래서 이중for문을 사용할 수 없는 문제인 것이라고 판단하고 map과 변수의 값을 서로 바꿔주는 로직을 생각해서 위와 같이 풀이를 하였더니 시간안에 정답을 제출 할 수 있었다. map을 사용할때 key값을 어떻게 찾아와야하는지를 처음에 생각하지 못했는데 생각을 해보니 callings배열에서 key값을 찾고 players배열을 통해 또 다른 key값을 찾을 수 있어서 해결 할 수 있었다. 

 

이제는 제한사항을 보면서 시간복잡도도 생각을 해야 하는 경우가 많아지고 또 이제는 map을 기본정도는 사용할 수 있게 된 것 같아서 그동안 풀리지않았던 알고리즘문제들이 조금씩 풀리면서 기분이 좋다. 이제 구현 문제는 적절한 자료구조를 통해 어느정도 풀이가 가능하지만 dfs라던가 재귀함수 같은 알고리즘을 사용해야하는 문제들이 나오고 있어서 이부분도 공부를 해야할 것 같다. 

'TIL' 카테고리의 다른 글

240322 TIL - 취업준비  (0) 2024.03.23
240321 TIL - 취업준비  (0) 2024.03.22
240318 TIL - 취업준비  (1) 2024.03.19
240315 TIL - Queue  (2) 2024.03.16
240314 TIL - 공간복잡도와 자료구조에서의 시간 복잡도  (0) 2024.03.14