수 조작하기 1
정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.
- "w" : n이 1 커집니다.
- "s" : n이 1 작아집니다.
- "d" : n이 10 커집니다.
- "a" : n이 10 작아집니다.
위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.
- -100,000 ≤ n ≤ 100,000
- 1 ≤ control의 길이 ≤ 100,000
control은 알파벳 소문자 "w", "a", "s", "d"로 이루어진 문자열입니다.
function solution(n, control) {
let result = n;
for (let i = 0; i < control.length; i++) {
if (control[i] === 'w') result += 1;
if (control[i] === 's') result -= 1;
if (control[i] === 'd') result += 10;
if (control[i] === 'a') result -= 10;
}
return result;
}
// 다른 사람의 풀이
function solution(n, control) {
for(let i = 0 ; i < control.length ; i++){
switch(control[i]) {
case "w" : n++; break;
case "s" : n--; break;
case "d" : n+=10; break;
case "a" : n-=10; break;
}
}
return n;
}
문자의 요소를 순회하면서 해당 문자에 해당할 경우 값을 계산하도록 작성했다.
<다른 사람의 풀이에 대한 이해>
스위치문으로 해결. 익히는 차원에서 가져왔다.
첫 번째로 나오는 음수
정수 리스트 num_list가 주어질 때, 첫 번째로 나오는 음수의 인덱스를 return 하도록 solution 함수를 완성해주세요. 음수가 없다면 -1을 return합니다.
- 5 ≤ num_list의 길이 ≤ 100
- -10 ≤ num_list의 원소 ≤ 100
function solution(num_list) {
let indexCnt = 0;
let result = 0;
for (let i = 0; i < num_list.length; i++) {
if (num_list[i] < 0) {
result = i;
indexCnt++;
break;
}
}
return indexCnt > 0 ? result : -1;
}
// 다른 사람의 풀이
const solution = num_list => num_list.findIndex(v => v < 0)
1) 배열의 요소를 순회하다가 음수가 나오면 해당 인덱스 위치값 i를 result에 할당한다.
2) 배열의 요소에 음수가 여러 개 있을 수 있으므로, break; 를 통해 첫 번째 음수의 인덱스만 구한다.
3) 인덱스 카운트가 1 이상이면 음수가 있으므로, 해당 인덱스 값을 아니면 -1을 반환한다.
2) 번에서 break를 생각 못해서 20분을 고민했다.
3) 번에서 indexCnt 아이디어가 안 떠올라서 또 20분을.. 중첩 반복문도 써봤다가 지웠다가 머리 뜯었다가 비볐다가.. ㅋ 어휴
<다른 사람의 풀이에 대한 이해>
findIndex()는 조건에 맞는 값이 나오면 해당 인덱스를 반환하고, 없다면 -1을 반환한다.
이를 사용하면, 한 번에 풀 수 있지만 반복문 연습을 위해 무식하게 for문으로 해결하였다.
'코딩테스트 > 프로그래머스 0단계 - 기초 트레이닝' 카테고리의 다른 글
프로그래머스 0단계 - 두 수의 연산값 계산하기 / 배열 비교하기 (0) | 2024.04.08 |
---|---|
프로그래머스 0단계 - 문자열 정수의 합 / 5명씩 (0) | 2024.04.05 |
프로그래머스 0단계 - 문자열 곱하기 / 카운트 업 (0) | 2024.04.04 |
프로그래머스 0단계 - 카운트 다운 / 홀수 vs 짝수 (0) | 2024.04.03 |
프로그래머스 0단계 - 배열 만들기 1 / n개 간격의 원소들 (0) | 2024.04.02 |
댓글