Skip to content

Comments

[moonjonghoo] 25.01.26#34

Merged
JooKangsan merged 17 commits intomainfrom
jh
Feb 6, 2025
Merged

[moonjonghoo] 25.01.26#34
JooKangsan merged 17 commits intomainfrom
jh

Conversation

@Moonjonghoo
Copy link
Collaborator

📌 푼 문제

모스부호(1)
A로B만들기
진료순서정하기
등수 매기기
완주하지 못한 선수


📝 간단한 풀이 과정

모스부호(1)

주어진 모스부호를 객체형태로 사용하고, 주어진 letter을 띄어쓰기 기준으로 나누어 순회하며 키값이 존재하면 값을 answer 에 더해줍니다.

function solution(letter) {
  var answer = "";
  let morse = {
    ".-": "a",
    "-...": "b",
    "-.-.": "c",
    "-..": "d",
    ".": "e",
    "..-.": "f",
    "--.": "g",
    "....": "h",
    "..": "i",
    ".---": "j",
    "-.-": "k",
    ".-..": "l",
    "--": "m",
    "-.": "n",
    "---": "o",
    ".--.": "p",
    "--.-": "q",
    ".-.": "r",
    "...": "s",
    "-": "t",
    "..-": "u",
    "...-": "v",
    ".--": "w",
    "-..-": "x",
    "-.--": "y",
    "--..": "z",
  };

  let arr = letter.split(" ");
  for (let i = 0; i < arr.length; i++) {
    if (morse.hasOwnProperty(arr[i])) {
      answer += morse[arr[i]];
    }
  }
  return answer;
}

console.log(solution(".... . .-.. .-.. ---"));

A로 B 만들기

결국 문자열의 구성이 동일해야 변환이가능하다.
각 문자열의 구성요소를 Map으로 뽑아내 비교

function solution(before, after) {
  let hash1 = new Map();
  let hash2 = new Map();

  for (let i = 0; i < before.length; i++) {
    hash1.set(before[i], (hash1.get(before[i]) || 0) + 1);
    hash2.set(after[i], (hash2.get(after[i]) || 0) + 1);
  }

  // Map 비교 함수
  function compareMaps(map1, map2) {
    if (map1.size !== map2.size) return false; // 크기 비교
    for (let [key, value] of map1) {
      if (map2.get(key) !== value) return false; // 키-값 비교
    }
    return true;
  }

  // 비교 결과 반환
  return compareMaps(hash1, hash2) ? 1 : 0;
}

console.log(solution("olleh", "hello")); // 1
console.log(solution("apple", "ppale")); // 0

console.log(solution("olleh", "hello"));

//바꿀수있다는것은 구성 요소의 종류와 개수가 같으면됩니다.

진료순서 정하기

function solution(emergency) {
  var answer = [];
  let newarr = emergency.slice();
  newarr.sort((a, b) => b - a);
  let map = new Map();
  for (let i = 0; i < newarr.length; i++) {
    map.set(newarr[i], i + 1);
  }
  for (let i = 0; i < emergency.length; i++) {
    let number = map.get(emergency[i]);
    answer.push(number);
  }
  return answer;
}

console.log(solution([3, 76, 24]));

등수매기기

평균값으로 등수매기기

function solution(score) {

  const averages = score.map(([eng, math]) => (eng + math) / 2);


  const sorted = [...averages].sort((a, b) => b - a);

 
  return averages.map((avg) => sorted.indexOf(avg) + 1);
}

완주하지 못한 선수

function solution(participant, completion) {
  let hash = new Map();
  for (let x of participant) {
    if (hash.has(x)) {
      hash.set(x, hash.get(x) + 1);
    } else hash.set(x, 1);
  }
  for (let y of completion) {
    if (hash.has(y)) {
      hash.set(y, hash.get(y) - 1);
    } else return y;
  }
  for (let x of participant) {
    if (hash.get(x)) {
      return x;
    }
  }
}

Copy link
Collaborator

@oh-chaeyeon oh-chaeyeon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이번주는 해시 관련 문제였는데, 신경써서 Map이랑 객체를 적절히 사용하려고 하신 점 좋았습니다👍🏻 다만, 불필요하게 반복문이나, 조건문이 있는 경우도 있는 것 같다는 생각이 들었습니다. 혹시 그리고 "완주하지 못한선수" 관련 코드파일이 빈파일이여서 의도하신걸까요..?
이번주도 수고하셨습니다!

@JooKangsan JooKangsan merged commit c62bc0a into main Feb 6, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants