Skip to content

Comments

[moonjonghoo]25.02.14#43

Merged
JooKangsan merged 25 commits intomainfrom
jh
Feb 20, 2025
Merged

[moonjonghoo]25.02.14#43
JooKangsan merged 25 commits intomainfrom
jh

Conversation

@Moonjonghoo
Copy link
Collaborator

@Moonjonghoo Moonjonghoo commented Feb 14, 2025

PR 제목은 [user_name] yy.mm.dd 형식으로 작성 (스터디 날짜)

📌 푼 문제

중복된 문자 제거 https://school.programmers.co.kr/learn/courses/30/lessons/120888
한 번만 등장한 문자 https://school.programmers.co.kr/learn/courses/30/lessons/120896
무작위로 K개의 수 뽑기 https://school.programmers.co.kr/learn/courses/30/lessons/181858
소인수분해 https://school.programmers.co.kr/learn/courses/30/lessons/120852


📝 간단한 풀이 과정

무작위로 K개의 수 뽑기

  • 배열에서 중복을 제거한 후, 앞에서부터 K개의 요소를 선택합니다.
  • 만약 고유한 숫자의 개수가 K보다 적다면, 나머지 부분을 -1로 채웁니다.
function solution(arr, k) {
  var answer = [];
  for (let i = 0; i < arr.length; i++) {
    if (!answer.includes(arr[i])) {
      answer.push(arr[i]);
    }
  }

  if (answer.length > k) {
    return answer.slice(0, k);
  } else if (answer.length < k) {
    while (answer.length !== k) {
      answer.push(-1);
    }
    return answer;
  } else {
    return answer;
  }
}

console.log(solution([0, 1, 1, 2, 2, 3], 5));
console.log(solution([0, 1, 1, 1, 1], 4));

소인수분해

  • 입력된 숫자를 2부터 나누며, 나누어 떨어질 경우 해당 숫자를 소인수 목록에 추가합니다.
  • 중복된 소인수를 제거하여 반환합니다.
function solution(n) {
  var answer = [];
  let division = 2;
  while (n !== 1) {
    if (n % division === 0) {
      n = n / division;
      answer.push(division);
    } else {
      division++;
    }
  }
  return Array.from(new Set(answer));
}

console.log(solution(12)); // 기대값: [2, 3]
console.log(solution(17)); // 기대값: [17]
console.log(solution(420)); // 기대값: [2, 3, 5, 7]

중복된 문자 제거

  • 문자열을 순회하며, 처음 등장하는 문자만 결과 문자열에 추가합니다.
function solution(my_string) {
  var answer = "";
  let set = [];
  for (let i = 0; i < my_string.length; i++) {
    if (!set.includes(my_string[i])) {
      set.push(my_string[i]);
      answer += my_string[i];
    }
  }
  return answer;
}

console.log(solution("people")); // 기대값: "peol"
console.log(solution("We are the world")); // 기대값: "We arthwold"

한 번만 등장한 문자

  • 문자열 내 문자의 등장 횟수를 저장한 후, 한 번만 등장한 문자를 오름차순으로 정렬하여 반환합니다.
function solution(s) {
  var answer = "";
  let arr = [];
  let hash = new Map();
  for (let i = 0; i < s.length; i++) {
    if (!hash.get(s[i])) {
      hash.set(s[i], 1);
    } else {
      hash.set(s[i], hash.get(s[i]) + 1);
    }
  }
  for (let [key, value] of hash) {
    if (value === 1) {
      arr.push(key);
    }
  }
  answer = arr.sort().join("");
  if (arr.length === 0) return "";
  return answer;
}

console.log(solution("abcabcadc")); // 기대값: "d"
console.log(solution("abdc")); // 기대값: "abdc"
console.log(solution("hello")); // 기대값: "eho"

@JooKangsan JooKangsan merged commit 619ff7c into main Feb 20, 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.

2 participants