Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 코딩테스트준비
- Cookie
- node.js
- 방송대컴퓨터과학과
- 항해99
- 방송대
- 중간이들
- JavaScript
- 데이터베이스시스템
- presignedurl
- nestjs
- SQL
- 프로그래머스
- 코드잇
- TiL
- 엘리스sw트랙
- HTML
- 유노코딩
- Git
- 99클럽
- 파이썬프로그래밍기초
- 꿀단집
- 코딩테스트
- Python
- redis
- aws
- 개발자취업
- CSS
- 파이썬
- MySQL
Archives
- Today
- Total
배꼽파지 않도록 잘 개발해요
[프로그래머스] 입문 Day 13 문자열, 배열, 사칙연산, 수학, 조건문 (Javascript) 본문
컨트롤 제트
문제 설명
- 숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 ≤ s의 길이 ≤ 200
- -1,000 < s의 원소 중 숫자 < 1,000
- s는 숫자, "Z", 공백으로 이루어져 있습니다.
- s에 있는 숫자와 "Z"는 서로 공백으로 구분됩니다.
- 연속된 공백은 주어지지 않습니다.
- 0을 제외하고는 0으로 시작하는 숫자는 없습니다.
- s는 "Z"로 시작하지 않습니다.
- s의 시작과 끝에는 공백이 없습니다.
- "Z"가 연속해서 나오는 경우는 없습니다.
입출력 예
s | result |
"1 2 Z 3" | 4 |
"10 20 30 40" | 100 |
"10 Z 20 Z 1" | 1 |
"10 Z 20 Z" | 0 |
"-1 -2 -3 Z" | -3 |
풀이 1
for문을 이용해서 z인 경우 뺄셈, 아닌 경우 덧셈을 수행하도록 함.
function solution(s) {
var answer = 0; // 계산값
arr = s.split(' ')
for (i = 0; i < arr.length; i++) {
if (arr[i] != 'Z') { // Z가 아닌 숫자
answer += parseInt(arr[i])
} else { // Z인 경우
answer -= parseInt(arr[i - 1])
}
}
return answer;
}
풀이 2
스택 구조 활용
function solution(s) {
// 스택 초기화
const stack = [];
// Z인 경우 마지막 원소 꺼내기, 아니면 stack에 추가
s.split(' ').forEach((val) => {
if (val === "Z") stack.pop();
else stack.push(+val); // 숫자로 형변환
})
console.log(stack)
// 스택에 있는 모든 원소의 합 더하기
return stack.reduce((acc, cur) => acc + cur, 0)
}
맨 처음으로 숫자가 들어가니까 Z가 나오기 전까지 스택에는 숫자가 들어 있음.
Z가 나올 때 마지막 원소를 배열에서 꺼내주는 방식으로 풀어도 됨.
배열 원소의 길이
문제 설명
- 문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ strlist 원소의 길이 ≤ 100
- strlist는 알파벳 소문자, 대문자, 특수문자로 구성되어 있습니다.
입출력 예
strlist | result |
["We", "are", "the", "world!"] | [2, 3, 3, 6] |
["I", "Love", "Programmers."] | [1, 4, 12] |
풀이 1
for 문으로 배열의 원소 순회해서 문자열이 길이를 새로운 배열에 넣기
function solution(strlist) {
let lengthofstr = [];
// 원소를 순회하면서 각 문자열의 길이를 배열에 넣기
for (i = 0; i < strlist.length; i++) {
lengthofstr.push(strlist[i].length)
}
return lengthofstr;
}
풀이 2
map을 활용하여 각 원소(문자열)의 길이 반환
function solution(strlist) {
return strlist.map(el => el.length)
}
map 대신 forEach를 쓰면 반환값이 undefined라서 안 됨.
중복된 문자 제거
문제 설명
- 문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ my_string ≤ 110
- my_string은 대문자, 소문자, 공백으로 구성되어 있습니다.
- 대문자와 소문자를 구분합니다.
- 공백(" ")도 하나의 문자로 구분합니다.
- 중복된 문자 중 가장 앞에 있는 문자를 남깁니다.
입출력 예
my_string | result |
"people" | "peol" |
"We are the world" | "We arthwold" |
풀이 1
set으로 중복 제거 후 배열로 만들어서 다시 문자열로 변환
function solution(my_string) {
const set = new Set(my_string.split(''))
return Array.from(set).join('');
}
function solution(my_string) {
return [...new Set(my_string)].join('')
}
문자열 자체를 Set으로 만들어 spread 구문으로 배열의 원소를 만들 수 있음.
풀이 2
filter와 indexOf을 사용해서 중복문자 제거
function solution(my_string) {
return [...my_string]
.filter((val, idx) => s.indexOf(val) === idx).join('');
}
'첫번째로 나오는 원소의 인덱스 = 해당 원소의 인덱스' 조건을 만족하는 원소만 나오도록 함.
삼각형의 완성조건 (1)
문제 설명
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
- 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
- 삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.
제한사항
- sides의 원소는 자연수입니다.
- sides의 길이는 3입니다.
- 1 ≤ sides의 원소 ≤ 1,000
입출력 예
sides | result |
[1, 2, 3] | 2 |
[3, 6, 2] | 2 |
[199, 72, 222] | 1 |
풀이 1
sort로 정렬 후 삼항연산자 이용
function solution(sides) {
// 입력된 배열을 오름차순으로 정렬
// 가장 긴 변 < 남은 원소의 합
sorted_arr = sides.sort((a, b) => a - b)
var answer = sorted_arr[2] < sorted_arr[0] + sorted_arr[1] ? 1 : 2
return answer;
}
풀이 2
배열을 내림차순 정렬 후 구조분해 할당
function solution(sides) {
// 배열을 내림차순 정렬 후 구조분해 할당
const [max, a, b] = sides.sort((a, b) => b - a)
return max < a + b ? 1 : 2
}
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 카드뭉치 (Lv.1 / JavaScript) (0) | 2024.08.01 |
---|---|
[프로그래머스] 입문 Day 14 조건문, 반복문, 시뮬레이션, 문자열 (JavaScript) (0) | 2024.01.13 |
[프로그래머스] 입문 Day 12 문자열, 정렬, 사칙연산, 수학 (Javascript) (0) | 2024.01.13 |
[프로그래머스] 입문 Day 11 수학, 반복문 (Javascript) (0) | 2023.12.21 |
[프로그래머스] 입문 Day 10 조건문, 배열, 수학, 시뮬레이션 (Javascript) (0) | 2023.12.19 |