Skip to content

Commit 3b38aa3

Browse files
authored
[tkddbs587] 25.01.09 (#16)
* String calculation / 기초 * fork 레포에서 폴더 옮김 * Control z / 기초 * I_hate_english / 기초 * String_reversal / 기초 * Valid_parentheses / 중급 * Crane_claw_machine_game / 중급 * Number_of_ordered_pairs / 기초 * Dart_game / 중급 * Find_point_position / 기초
1 parent 4daf7e4 commit 3b38aa3

11 files changed

+198
-0
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
function solution(arr, divisor) {
2+
let newArr = arr.filter((el) => el % divisor === 0); // 나누어 떨어지는 엘리먼트가 담긴 새 배열 반환
3+
4+
// 나누어 떨어지는 엘리먼트 없으면 그냥 [-1] 반환
5+
if (newArr.length === 0) {
6+
return [-1];
7+
}
8+
9+
return newArr.sort((a, b) => a - b); // 오름차순 정렬
10+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
function solution(strlist) {
2+
return strlist.map((str) => str.length);
3+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
function solution(dot) {
2+
const [x, y] = dot; // x, y 값
3+
4+
if (Math.sign(x) === 1) {
5+
// x값이 양수일때
6+
if (Math.sign(y) === 1) {
7+
// y값도 양수면
8+
return 1; // 1사분면
9+
} else {
10+
return 4; // x값은 양수고 y값은 음수 -> 4사분면
11+
}
12+
}
13+
14+
if (Math.sign(x) === -1) {
15+
// x값이 음수일때
16+
if (Math.sign(y) === -1) {
17+
// y값도 음수면
18+
return 3; // 3사분면
19+
} else {
20+
return 2; // y값은 양수고 x값은 음수 -> 2사분면
21+
}
22+
}
23+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
function solution(n) {
2+
let count = 0;
3+
4+
for (let i = 1; i <= n; i++) {
5+
if (n % i === 0) {
6+
// n의 약수 구하기
7+
count++; // 약수 구할때마다 카운트업
8+
}
9+
}
10+
11+
return count; // 순서쌍 갯수 반환
12+
}

tkddbs587/Stack/Control_z.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
function solution(s) {
2+
let answer = 0;
3+
const arr = s.split(" "); // 공백을 기준으로 문자열을 배열로 변환
4+
for (let i = 0; i < arr.length; i++) {
5+
if (arr[i] !== "Z") {
6+
// 배열 요소가 'Z' 가 아니면
7+
answer += Number(arr[i]); // Number 타입으로 변환 후 변수에 더하기
8+
} else {
9+
answer -= Number(arr[i - 1]); // 'Z' 면 현재 인덱스 하나 전 인덱스의 숫자 빼기
10+
}
11+
}
12+
return answer; // 최종 숫자 반환
13+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
function solution(board, moves) {
2+
// 2차원 배열 board를 각 열마다 스택 생성 5x5일 경우 총 5개의 스택 생성
3+
let stack = [...Array(board[0].length)].map(() => []);
4+
5+
for (let i = board.length - 1; i >= 0; i--) {
6+
for (let j = 0; j < board[0].length; j++) {
7+
if (board[i][j] !== 0) {
8+
// 0이 아닐때만 각 스택에 추가
9+
stack[j].push(board[i][j]); // 스택의 각 열에 맞춰 board의 요소들 추가
10+
}
11+
}
12+
}
13+
14+
let removeCount = 0;
15+
let bucket = [];
16+
17+
for (let m of moves) {
18+
if (stack[m - 1].length > 0) {
19+
// 스택의 열에 인형이 존재하면
20+
const doll = stack[m - 1].pop(); // 맨 위의 인형 집어서
21+
// 바구니에 인형이 있고 맨 위의 인형이 지금 넣으려는 인형과 같으면
22+
if (bucket.length > 0 && bucket[bucket.length - 1] === doll) {
23+
bucket.pop(); // 바구니 맨 위의 인형 제거
24+
removeCount += 2; // 제거한 갯수 2개 추가
25+
} else {
26+
bucket.push(doll); // 바구니에 인형이 없거나 맨 위 인형과 같지 않은 인형이면 추가
27+
}
28+
}
29+
}
30+
31+
return removeCount;
32+
}

tkddbs587/Stack/Dart_game.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
function solution(d) {
2+
let arr = d.split("");
3+
let stack = [];
4+
let score = 0;
5+
6+
for (let i = 0; i < arr.length; i++) {
7+
if (!isNaN(arr[i])) {
8+
if (arr[i] === "1" && arr[i + 1] === "0") {
9+
// 점수가 10인 경우
10+
score = 10; // 총 스코어에 10점 추가
11+
i++; // 0 건너뛰기
12+
} else score = arr[i];
13+
} else if (arr[i] === "S") {
14+
stack.push(Math.pow(score, 1)); // Single -> 1제곱
15+
} else if (arr[i] === "D") {
16+
stack.push(Math.pow(score, 2)); // Double -> 2제곱
17+
} else if (arr[i] === "T") {
18+
stack.push(Math.pow(score, 3)); // Triple -> 3제곱
19+
} else if (arr[i] === "#") {
20+
// 아차상일 경우
21+
stack[stack.length - 1] *= -1; // 해당 점수 빼기
22+
} else if (arr[i] === "*") {
23+
// 스타상일 경우
24+
stack[stack.length - 1] *= 2; // 해당 점수 2배
25+
stack[stack.length - 2] *= 2; // 바로 전 점수도 2배
26+
}
27+
}
28+
29+
let result = 0;
30+
for (let i = 0; i < stack.length; i++) {
31+
result += stack[i]; // 총 점수 구하기
32+
}
33+
34+
return result; // 총 점수 반환
35+
}

tkddbs587/Stack/I_hate_english.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
function solution(numbers) {
2+
let numArr = [
3+
"zero",
4+
"one",
5+
"two",
6+
"three",
7+
"four",
8+
"five",
9+
"six",
10+
"seven",
11+
"eight",
12+
"nine",
13+
]; // 0 ~ 9 배열 생성
14+
let strNum = ""; // 숫자를 문자열로 표현한 numbers를 인덱스 순서대로 담을 변수
15+
let result = ""; // 숫자 단어에 해당하는 숫자를 담을 변수
16+
for (let i = 0; i < numbers.length; i++) {
17+
strNum += numbers[i]; // 변수에 numbers 인덱스 순서대로 담기
18+
19+
if (numArr.includes(strNum)) {
20+
// 차례대로 담다가 배열에 해당하는 숫자가 있으면
21+
result += numArr.indexOf(strNum); // 해당 숫자 인덱스를 변수에 추가
22+
strNum = ""; // numbers에 있는 다음 숫자 단어를 더해주기 위해 초기화
23+
}
24+
}
25+
return Number(result); // 문자열로 돼있는 숫자 변수를 number 타입으로 변환 후 결과 반환
26+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
function solution(my_string) {
2+
let arr = my_string.split(" "); // 공백을 기준으로 배열 생성
3+
console.log(arr);
4+
let result = Number(arr[0]); // 0번 인덱스 숫자로 변환 = 첫번째 숫자 구하고
5+
for (let i = 1; i < arr.length; i += 2) {
6+
// 홀수 인덱스 접근 = 연산자에 접근
7+
let operator = arr[i]; // 현재 연산자
8+
let NextNum = Number(arr[i + 1]); // 연산자 오른쪽 숫자
9+
if (operator === "+") {
10+
// 연산자가 + 면 더하고
11+
result += NextNum;
12+
} else {
13+
result -= NextNum; // - 면 빼기
14+
}
15+
}
16+
return result; // 결과 반환
17+
}

tkddbs587/Stack/String_reversal.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
function solution(str) {
2+
var answer = "";
3+
for (let i = str.length - 1; i >= 0; i--) {
4+
// 문자열 변수 str의 마지막 인덱스부터 한글자씩 접근
5+
answer += str[i]; // 문자열 변수 answer에 추가
6+
}
7+
return answer; // 뒤집은 문자열 반환
8+
}

0 commit comments

Comments
 (0)