본문 바로가기
알고리즘/Programmers

[TIL] 2023.03.26 Programmers 문제 풀기

by heereal 2023. 3. 26.

Today I Learned

  • Programmers 문제 풀기
  • 이력서 넣기

 


Programmers 문제 풀기

인덱스 바꾸기

나의 풀이

function solution(my_string, num1, num2) {
    return my_string
    	.split("")
        .map((str, i) => 
        i === num1 ? str = my_string[num2] : i === num2 ? str = my_string[num1] : str
        ).join("");
}

my_string을 배열로 만든 후에 map을 돌려서 인덱스에 따라 삼항연산자로 처리했다.

 

 

다른 사람의 풀이

function solution(my_string, num1, num2) {
    my_string = my_string.split('');
    [my_string[num1], my_string[num2]] = [my_string[num2], my_string[num1]];
    return my_string.join('');
}

일단 my_string을 배열로 만든 후에 구조 분해 할당을 이용한다. 구조 분해 할당으로 기존 배열의  수정할 수 있다는 건 처음 알았다.😳

 

 

구조 분해 할당 활용 예시

기본 문법

const [a, b] = [1, 2];
console.log(a); // 1
console.log(b); // 2

const x = [1, 2, 3, 4, 5];
const [y, z] = x;
console.log(y); // 1
console.log(z); // 2

 

 

기본 변수 할당

var foo = ['one', 'two', 'three'];
var [one, two, three] = foo;

console.log(one); // "one"
console.log(two); // "two"
console.log(three); // "three"

 

값 교환

var [a, b] = [1, 3];

[a, b] = [b, a];
console.log(a); // 3
console.log(b); // 1

 

출처 https://charming-kyu.tistory.com/23

 

 

최고의 집합

누군가의 풀이

function solution(n, s) {
  if (n > s) {
    return [-1];
  } else {
    const dividend = s; // 피제수
    const divisor = n; // 제수
    const quotient = Math.floor(dividend / divisor); // 몫 계산
    const remainder = dividend % divisor; // 나머지 계산
    let arr = new Array(n).fill(quotient); // 길이가 5인 배열 생성 후 1로 초기화
    for (let i = 1; i <= remainder; i++) {
      arr[arr.length - i] = arr[arr.length - i] + 1;
    }
    return arr;
  }
}

내가 푼 건 아니고 누가 문제 푸는 과정을 구경했다. 근데 멋진 풀이라서 기록용으로 남김 ㅋㅋ

 

 


회고

 

프리온보딩 프론트엔드 챌린지 4월 | 원티드

AI 채용, 연봉 정보, 이력서, 커리어 콘텐츠까지 커리어 성장에 필요한 모든 것, 원티드에서 만나보세요.

www.wanted.co.kr

원티드에서 진행하는 프리온보딩 프론트엔드 챌린지 4월 커리큘럼이 딱 내가 궁금했던 부분을 다루고 있어서 좋은 기회가 되겠다 싶어 신청했다. 이제 내일부터 4월 첫째 주까지 기술면접 스터디가 진행되긴 하지만 일정이 많이 겹치진 않기 때문에 병행이 가능할 거 같다. 안 그래도 리액트 기초 공부가 필요하다고 생각했었는데 잘 됐음!

 

 

 

 

댓글