분류 전체보기(196)
-
프로그래머스 L1 - 문자열 나누기
https://school.programmers.co.kr/learn/courses/30/lessons/140108 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr X를 기준으로 X의 갯수와 나머지 다른 문자의 갯수가 동일해지는 시점에서 문자열을 자른다. 그렇게 해서 잘린 문자열의 갯수를 반환하는 문제이다. function solution(s) { let x = 0; let cnt = 0; let ret = []; for(let i = 0; i
2024.03.21 -
프로그래머스 L1 - 덧칠하기
https://school.programmers.co.kr/learn/courses/30/lessons/161989 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음에는 m크기만큼의 범위를 만들어서 영역을 모두 순회하면서 칠해야하는 부분이 범위에 속해있는지를 확인하는 로직을 짰지만 시간초과가 계속 나왔다. 내가 현재 칠한 부분보다 칠해야하는 부분이 크다면 그 영역을 칠해주고 현재 칠한 부분을 업데이트하면 된다. 무식하게 풀어보고, 안되면 다른 로직을 생각하자. function solution(n, m, section) { let answer = 0; l..
2024.03.20 -
코드를 값으로 다루기
함수형 프로그래밍은 코드를 값으로 다룰 수 있다고 했다. 이 말이 무슨 말일까? go( 0, (a) => a + 1, (a) => a + 10, (a) => a + 100, console.log ); go 함수를 실행하면 0 + 1 + 10 + 100 의 연산을 거쳐 111을 리턴하게끔 구현하고 싶다. 정의한 reduce 함수를 활용해서 파라미터로 전달한 함수 코드를 값처럼 다뤄보자. const reduce = (f, acc, iter) => { if (!iter) { iter = acc[Symbol.iterator](); acc = iter.next().value; } for (const a of iter) { acc = f(acc, a); } return acc; }; const go = (...ar..
2024.03.19 -
프로그래머스 L1 - 달리기 경주
https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(players, callings) { for(const name of callings){ let idx =players.indexOf(name); [players[idx-1],players[idx]] = [players[idx],players[idx-1]]; } return players; } 이렇게 작성하면 시간 초과가 나온다. 왜냐하면 players의 최댓값은..
2024.03.19 -
프로그래머스 L1 - 붕대 감기
https://school.programmers.co.kr/learn/courses/30/lessons/250137 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해석 타임라인을 만들어 공격받는 시간인지 공격을 받지 않는 시간인지 구분한다. 그리고 공격받는 시간이라면 피를 깎고, 그렇지 않으면 회복한다. 단, 피가 가득 찼을 경우에는 회복하지 않아야하고, 연속적으로 회복했을 때 보너스로 받는 회복량이 존재한다. 코드 function solution(bandage, health, attacks) { var answer = health; let max = -..
2024.03.19 -
프로그래머스 L1 - 가장 많이 받은 선물
https://school.programmers.co.kr/learn/courses/30/lessons/258712 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해석 이차원 배열을 활용한 구현문제이다. 먼저 이차원배열을 만들어 선물을 주고 받은 관계를 행렬로 표현한다. 이차원배열의 세로줄이 받은 선물의 갯수이고 가로줄이 준 선물의 갯수이다. 이 데이터를 기반으로 map을 만들어서 선물지수를 표현한다. 그리고 이차원 배열을 탐색하면서 조건에 맞는지 확인하면 된다. 코드 function solution(friends, gifts) { var answer =..
2024.03.19