타닥타닥 개발자의 일상

[JS, JavaScript] Map 자료구조 개념 이해를 체크하기 위한 간단한 코딩문제 풀어보기 본문

코딩 기록/JavaScript

[JS, JavaScript] Map 자료구조 개념 이해를 체크하기 위한 간단한 코딩문제 풀어보기

NomadHaven 2023. 6. 2. 14:53

 

gameEnvets 라는 이름의 Map은 축구 경기동안 발생한 사건과 시간의 자료를 담은 자료구조이다.

첫번재 key 값은 경기 시작 이후 사건이 발생한 시간이며

두번재 value 값은 해당 시간에 발생한 사건이다.

const gameEvents = new Map([
  [17, '⚽ GOAL'],
  [36, '🔛 Substitution'],
  [47, '⚽ GOAL'],
  [61, '🔛 Substitution'],
  [64, '🟨 Yellow card'],
  [69, '🟥 Red card'],
  [70, '🔛 Substitution'],
  [72, '🔛 Substitution'],
  [76, '⚽ GOAL'],
  [80, '⚽ GOAL'],
  [92, '🟨 Yellow card'],
]);

 

 

해당 사항을 참고하여 아래의 문제를 JS 언어로 풀어보자.

Q1)  중복이 없는 사건으로만 구성된 events라는 배열을 만들어라.






 
A1)
const events = [...new Set(gameEvents.values())];
console.log(events);

 

출력

 


 

Q2)  경기가 끝난 후 64분 경의 옐로우 카드는 부적격 판정을 받았다. 해당 시간에 일어난 사건은 삭제하라.







A2)

 

gameEvents.delete(64);
console.log(gameEvents);

출력

 

 

 


   Q3) 경기 시간 동안 평균 몇분마다 사건이 일어났는지 계산하고 해당 결과를 출력하라.








A3)

//마지막 key 값 찾기(마지막 시간 찾기 위해서)
const time = [...gameEvents.keys()].pop();
console.log(time);

//이벤트 일어나는 시간의 평균 출력
console.log(
  `An event happened, on average, every ${time / gameEvents.size} minutes`
);​

 

 

 


 

Q4) 각 이벤트가 일어날 때마다  [FIRST HALF] 17: ⚽ GOAL 과 같은 형식의 문장을 출력하라. 참고로 45분 이후 발생한 사건은 후반전이므로 [FIRST HALF] 대신 [SENCOND HALF]로 출력되어야 한다.






 A4)
for (const [min, event] of gameEvents) {
  const half = min <= 45 ? 'First' : 'Second';
  console.log(`[${half} HALF] ${min}: ${event}`);
}​

Comments