Skip to content

Commit 22c3f15

Browse files
authored
[tkddbs587] 25.01.16 (#27)
* 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 / 기초 * Card_bundle / 중급 * Login_success / 기초 * Make_burger / 중급 * Set_treatment_order / 기초 * Ranking / 기초 * Make_b_from_a / 기초 * Morse_code / 기초
1 parent 246c1b1 commit 22c3f15

File tree

7 files changed

+109
-0
lines changed

7 files changed

+109
-0
lines changed

tkddbs587/Hash/Make_b_from_a.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
function solution(before, after) {
2+
// 1. 문자열을 배열로 변환
3+
// 2. 오름차순 정렬
4+
// 3. 정렬한 배열 문자열로 변환 후 비교
5+
return before.split("").sort().join("") === after.split("").sort().join("")
6+
? 1
7+
: 0;
8+
}

tkddbs587/Hash/Morse_code.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
function solution(letter) {
2+
// 모스 부호 객체
3+
morse = {
4+
".-": "a",
5+
"-...": "b",
6+
"-.-.": "c",
7+
"-..": "d",
8+
".": "e",
9+
"..-.": "f",
10+
"--.": "g",
11+
"....": "h",
12+
"..": "i",
13+
".---": "j",
14+
"-.-": "k",
15+
".-..": "l",
16+
"--": "m",
17+
"-.": "n",
18+
"---": "o",
19+
".--.": "p",
20+
"--.-": "q",
21+
".-.": "r",
22+
"...": "s",
23+
"-": "t",
24+
"..-": "u",
25+
"...-": "v",
26+
".--": "w",
27+
"-..-": "x",
28+
"-.--": "y",
29+
"--..": "z",
30+
};
31+
32+
// letter의 모스 부호가 공백 기준으로 나눠져있으므로 split를 통해 배열로 변환
33+
// 변환된 배열을 map을 통해 순회하며 morse 객체의 키와 일치하는 영어 문자열 value로 이루어진 새 배열 반환
34+
// 영어 배열을 join을 통해 문자열로 변환
35+
return letter
36+
.split(" ")
37+
.map((el) => morse[el])
38+
.join("");
39+
}

tkddbs587/Hash/Ranking.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
function solution(score) {
2+
// score의 평균 점수 구하기
3+
let average = score.map((el) => (el[0] + el[1]) / 2);
4+
5+
// 평균을 내림차순으로 정렬한 배열 선언 slice() 통해 average 배열 얕은 복사(원본 배열은 변경되지 않음)
6+
let sortedAverage = average.slice().sort((a, b) => b - a);
7+
8+
// average의 요소와 동일한 sortedAverage 배열의 index 값에 1을 더하기
9+
return average.map((el) => sortedAverage.indexOf(el) + 1);
10+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
function solution(emergency) {
2+
let sorted = [...emergency].sort((a, b) => b - a); // 배열 내림차순 정렬
3+
4+
return emergency.map((v) => sorted.indexOf(v) + 1);
5+
// 기존 배열의 각 요소를 내림차순 정렬된 배열에 매칭되는 요소로 접근하여 index + 1 로 순서대로 순위 매기고 map() 메서드를 통해 순위가 담긴 새 배열 반환
6+
}

tkddbs587/Queue/Card_bundle.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
function solution(cards1, cards2, goal) {
2+
let index1 = 0; // 카드1의 인덱스
3+
let index2 = 0; // 카드2의 인덱스
4+
5+
for (let i = 0; i < goal.length; i++) {
6+
if (cards1[index1] === goal[i]) {
7+
// 카드1의 인덱스 0부터 순서대로 골의 인덱스 i와 같으면
8+
index1++; // 카드 1의 인덱스 1 증가
9+
} else if (cards2[index2] === goal[i]) {
10+
// 카드2의 인덱스 0부터 순서대로 골의 인덱스 i와 같으면
11+
index2++; // 카드 2의 인덱스 1 증가
12+
} else return "No"; // 순서대로 비교하다가 더 이상 일치하는 인덱스가 없으면 만들 수 없는 문장이므로 No 반환
13+
}
14+
return "Yes"; // goal의 인덱스만큼 순회를 성공적으로 마치면 문장을 만들 수 있으므로 Yes 반환
15+
}

tkddbs587/Queue/Login_success.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
function solution(id_pw, db) {
2+
const [id, pw] = id_pw; // 아이디, 패스워드 분리
3+
const map = new Map(db); // db를 기반으로 Map 객체 생성
4+
console.log(map);
5+
6+
if (map.has(id)) {
7+
// map 객체에 id 가 있을때
8+
if (map.get(id) === pw) {
9+
// 아이디와 패스워드가 일치하면
10+
return "login"; // 'login' 반환
11+
} else return "wrong pw"; // 아이디는 같은데 패스워드만 틀리면 'wrong pw' 반환
12+
} else return "fail"; // 둘 다 틀리면 'fail' 반환
13+
}

tkddbs587/Queue/Make_burger.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
function solution(ingredient) {
2+
let stack = []; // 스택
3+
let count = 0; // 햄버거 포장 갯수
4+
for (let i = 0; i < ingredient.length; i++) {
5+
stack.push(ingredient[i]); // ingredient 인덱스 순서대로 스택에 추가
6+
if (stack.length >= 4) {
7+
// 스택에 재료가 4개 이상 쌓였을때
8+
const hamburger = stack.slice(-4).join(""); // 스택의 끝에서부터 4개의 요소 문자열로 추출
9+
10+
if (hamburger === "1231") {
11+
// 추출한 문자열이 1231 순서와 일치하면
12+
count++; // 포장 갯수 1 증가
13+
stack.splice(-4); // 스택에서 포장된 햄버거 제거
14+
}
15+
}
16+
}
17+
return count; // 총 포장 갯수 반환
18+
}

0 commit comments

Comments
 (0)