코딩테스트/프로그래머스

[Java] 프로그래머스 Level 1: 달리기 경주

이덩우 2023. 5. 25. 00:48

- 문제설명

- 제한사항

- 예시 & 입출력 예

- 해결과정

  • 처음엔 for문을 통해 직접 배열을 처음부터 끝까지 돌며, callings 당한 사람의 인덱스를 찾고 하나하나 직접 앞 등수의 인원과 자리를 바꿔주는 코드를 작성했다.
  • 결과는 시간초과로, 시간복잡도를 고려해 새로운 방식의 답안을 찾아내야 했다.
  • HashMap을 이용하면 Key - Value 형식으로 데이터가 저장되기 때문에, 반복문을 통해 처음부터 끝까지 돌며 인덱스를 찾아야하는 수고를 덜 수 있었다.
  • 초기 HashMap은 기존의 players 순위에 맞게 "선수 - 순위" 구조의 Key - Value 관계로 선언한 후, 반복문을 통해 Map을 채워나갔다.
  • 이후 callings 을 통한 순위변경을 players에 직접 하지않고, 우선 Map을 변화시킨 뒤 최종결과를 players 배열에 대입한 뒤 return 시켰다. 

- 솔루션

- 배운점

  • HashMap을 사용할 수 있는 상황이라면, for문을 통해 배열을 모두 뒤지는것 보단 Key - Value 형태로 직접 찾는게 
    시간복잡도를 고려했을 때 좋은 판단이다.