고양이와 코딩
[프로그래머스] 11월14일 ~ 11월20일 본문
11월14일
콜라츠 수열 만들기
내 풀이
function solution(n) {
var answer = [];
answer.push(n);
while (n !== 1){
if (n % 2 === 0){
n = n / 2;
answer.push(n);
} else if ( n % 2 !== 0){
n = 3 * n + 1;
answer.push(n);
}
}
return answer;
}
배열 만들기4
내 풀이
function solution(arr) {
var stk = [];
var i = 0;
while ( i < arr.length){
if ( stk.length < 1){
stk.push(arr[i]);
i++;
} else if (stk.length >= 1){
if ( stk[stk.length - 1] < arr[i]){
stk.push(arr[i]);
i += 1;
} else if (stk[stk.length - 1] >= arr[i]){
stk.pop();
}
}
}
return stk;
}
간단한 논리 연산
내 풀이
function solution(x1, x2, x3, x4) {
var answer = (x1 || x2) && (x3 || x4);
return answer;
}
∧ == 논리곱 == and == &&
∨ == 논리합 == or == ||
11월 15일
주사위 게임3
아.. 진짜 까다롭다 ㅜㅜ 이거 if문으로 다 박아서 풀긴 했는데 다른 방법으로 풀고싶어서 이런저런 풀이들을 찾아봤다
근데!!!! 이해가 안된다 ㅋㅋ 뭐 성능은 떨어질지언정 if문으로 푸는게 가장 보기는 좋은듯.. 에라모르겠다 풀기만 하면 된거아녀
내 풀이
function solution(a, b, c, d) {
if (a === b && a === c && a === d) return 1111 * a
if (a === b && a === c) return (10 * a + d) ** 2
if (a === b && a === d) return (10 * a + c) ** 2
if (a === c && a === d) return (10 * a + b) ** 2
if (b === c && b === d) return (10 * b + a) ** 2
if (a === b && c === d) return (a + c) * Math.abs(a - c)
if (a === c && b === d) return (a + b) * Math.abs(a - b)
if (a === d && b === c) return (a + b) * Math.abs(a - b)
if (a === b) return c * d
if (a === c) return b * d
if (a === d) return b * c
if (b === c) return a * d
if (b === d) return a * c
if (c === d) return a * b
return Math.min(a, b, c, d)
}
나는 return문을 전부 if문 아래줄에 썼는데, 다른사람의풀이를 보니 이렇게 한줄로 쓴게 있옸다.
이게 훨씬 깔끔해서 이렇게 수정했다 ㅎㅎ
글자 이어 붙여 문자열 만들기
내 풀이
function solution(my_string, index_list) {
return index_list.reduce((acc, index) =>
acc + (my_string[index] || ''), '');
}
reduce함수를 사용해서 index_list의 요소를 순회하고, 그 요소에 해당하는 index를 my_string에 적용해서 acc에 누적해서 더한당
ㅎ해당하는 인덱스가 없으면 ''빈 문자열을 더하고!! reduce함수의 초깃값으로 ''을 준당
9로 나눈 나머지
처음 풀이
function solution(number) {
var answer = 0;
for (let i = 0; i < number.length; i++){
answer += parseInt(number[i], 10);
answer %= 9;
}
return answer;
}
문자열 여러 번 뒤집기
내 풀이
function solution(my_string, queries) {
queries.forEach(([a, b]) => {
const reversed_string = my_string.substring(a, b + 1).split('').reverse().join('');
my_string = my_string.slice(0, a) + reversed_string + my_string.slice(b + 1);
});
return my_string;
}
2차원 배열을 forEach문으로 추출한 뒤 reversed_string 변수를 만들어서 각각의 구간을 뒤집고, 기존의 문자열을 추출하지 않은 부분과 추출 한 부분으로 나누어서 더해준다 ㅎㅎ
11월17일
배열 만들기5
첫 번째 풀이
function solution(intStrs, k, s, l) {
var answer = [];
for (let i = 0; i < intStrs.length; i++){
var subStrs = intStrs[i].substring(s, l);
if (parseInt(subStrs) > k){
answer.push(parseInt(subStrs));
}
}
return answer;
}
흠 ㄱㅡ 왠지 계속 빈 배열만 반환되서 이유를 찾아봤더니
function solution(intStrs, k, s, l) {
var answer = [];
for (let i = 0; i < intStrs.length; i++){
var subStrs = intStrs[i].substring(s, s + l);
if (parseInt(subStrs) > k){
answer.push(parseInt(subStrs));
}
}
return answer;
}
substring으로 문자열을 자를 때 범위를 s, s + l 로 정해주어야 한다
부분 문자열 이어 붙여 문자열 만들기
내 풀이
function solution(my_strings, parts) {
var answer = '';
for (let i = 0; i < my_strings.length; i++) {
const [a, b] = parts[i];
const subString = my_strings[i].substring(a, b + 1);
answer += subString;
}
return answer;
}
이차원 배열에 익숙해지는중 ㅎ ㅅ ㅎ
11월18일
문자열 뒤의 n글자
내 풀이
function solution(my_string, n) {
return my_string.substring(my_string.length - n, my_string.length);
}
뒤에서 n번째 문자부터 끝까지
접미사 배열
내 풀이
function solution(my_string) {
var answer = [];
for (let i = 1; i < my_string.length + 1; i++){
answer.push(my_string.substring(my_string.length - i, my_string.length ));
}
return answer.sort();
}
11월19일
접미사인지 확인하기
내 풀이
function solution(my_string, is_suffix) {
var answer = [];
for(let i = 1; i < my_string.length + 1; i++){
answer.push(my_string.substring(my_string.length - i, my_string.length));
}
return answer.includes(is_suffix) ? 1 : 0;
}
다른 사람의 풀이
const solution = (str, suff) => str.endsWith(suff) ? 1 : 0
ㅔ??
문자열 앞의 n글자
내 풀이
function solution(my_string, n) {
return my_string.substring(0,n);
}
접두사인지 확인하기
내 풀이
function solution(my_string, is_prefix) {
var array = [];
for (let i = 1; i < my_string.length + 1; i++){
array.push(my_string.substring(0, i));
}
return array.includes(is_prefix) ? 1 : 0;
}
문자열 뒤집기
내 풀이
function solution(my_string, s, e) {
return my_string.substring(0, s) +
my_string.substring(s, e + 1).split('').reverse().join('') +
my_string.substring(e + 1, my_string.length);
}
'javascript' 카테고리의 다른 글
[프로그래머스] 11월29일 ~ 12월03일 (0) | 2023.11.29 |
---|---|
[프로그래머스] 11월21일 ~ 11월27일 (0) | 2023.11.21 |
[프로그래머스] 11월7일 ~ 11월13일 (0) | 2023.11.07 |
[프로그래머스] 10월31일 ~ 11월6일 (0) | 2023.10.31 |
[프로그래머스] 10월 27일 ~ 10월 30일 (1) | 2023.10.27 |