Skip to content

Commit 06f6211

Browse files
committed
Feat: Done Programmers Coding Test(day6)
1 parent 4abcfb9 commit 06f6211

8 files changed

+405
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
## 문제 설명
2+
가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.
3+
4+
## 제한사항
5+
0 < rsp의 길이 ≤ 100
6+
rsp와 길이가 같은 문자열을 return 합니다.
7+
rsp는 숫자 0, 2, 5로 이루어져 있습니다.
8+
## 입출력 예
9+
rsp |result
10+
:--:|:--:
11+
"2" |"0"
12+
"205"| "052"
13+
## 입출력 예 설명
14+
입출력 예 #1
15+
16+
- "2"는 가위이므로 바위를 나타내는 "0"을 return 합니다.
17+
18+
입출력 예 #2
19+
20+
- "205"는 순서대로 가위, 바위, 보이고 이를 모두 이기려면 바위, 보, 가위를 순서대로 내야하므로 “052”를 return합니다.
21+
22+
## 문제 풀이
23+
```js
24+
function solution(rsp) {
25+
var rspList = [...rsp]
26+
var answer = '';
27+
for (var i = 0; i < rspList.length; i++){
28+
switch(rspList[i]){
29+
case '0':
30+
answer = answer + "5"
31+
break;
32+
case '2' :
33+
answer = answer + "0"
34+
break;
35+
case '5' :
36+
answer = answer + "2"
37+
break;
38+
default:
39+
break;
40+
}
41+
}
42+
43+
return answer;
44+
}
45+
```
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
## 문제 설명
2+
개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.
3+
4+
## 제한사항
5+
hp는 자연수입니다.
6+
- 0 ≤ hp ≤ 1000
7+
## 입출력 예
8+
hp |result
9+
:--:|:--:
10+
23| 5
11+
24| 6
12+
999| 201
13+
## 입출력 예 설명
14+
입출력 예 #1
15+
16+
- hp가 23이므로, 장군개미 네마리와 병정개미 한마리로 사냥할 수 있습니다. 따라서 5를 return합니다.
17+
18+
입출력 예 #2
19+
20+
- hp가 24이므로, 장군개미 네마리 병정개미 한마리 일개미 한마리로 사냥할 수 있습니다. 따라서 6을 return합니다.
21+
22+
입출력 예 #3
23+
24+
- hp가 999이므로, 장군개미 199 마리 병정개미 한마리 일개미 한마리로 사냥할 수 있습니다. 따라서 201을 return합니다.
25+
26+
## 문제풀이
27+
```js
28+
function solution(hp) {
29+
var answer = 0;
30+
var general = Math.floor(hp/5);
31+
var soldier = Math.floor((hp - (general * 5))/3);
32+
var worker = hp - (general*5) - (soldier*3);
33+
34+
answer = general + soldier + worker
35+
36+
37+
return answer;
38+
}
39+
```
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
## 문제 설명
2+
머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.
3+
4+
## 제한사항
5+
- 1 ≤ balls ≤ 30
6+
- 1 ≤ share ≤ 30
7+
- 구슬을 고르는 순서는 고려하지 않습니다.
8+
- share ≤ balls
9+
## 입출력 예
10+
balls |share| result
11+
:--:|:--:|:--:
12+
3 |2| 3
13+
5 |3| 10
14+
## 입출력 예 설명
15+
입출력 예 #1
16+
17+
- 서로 다른 구슬 3개 중 2개를 고르는 경우의 수는 3입니다. 스크린샷 2022-08-01 오후 4.15.55.png
18+
19+
입출력 예 #2
20+
21+
- 서로 다른 구슬 5개 중 3개를 고르는 경우의 수는 10입니다.
22+
23+
Hint
24+
- 서로 다른 n개 중 m개를 뽑는 경우의 수 공식은 다음과 같습니다. (n! / (n-m)! * m!)
25+
26+
27+
※ 공지 - 2022년 10월 11일 제한 사항 및 테스트케이스가 수정되었습니다.
28+
29+
## 문제 풀이
30+
```js
31+
function pactorial(number){
32+
var sum = 1
33+
if (number === 0) {
34+
sum = 1
35+
}
36+
for (var i = number; i > 0; i-- ){
37+
sum = sum * i
38+
}
39+
return sum
40+
}
41+
42+
function solution(balls, share) {
43+
var answer = 0;
44+
if( balls >=1 && balls <= 30){
45+
if(share >=1 && share <= 30){
46+
var n = pactorial(balls)
47+
var m = pactorial(share)
48+
var o = pactorial(balls-share)
49+
50+
answer = Math.round((n/(m*o)))
51+
}
52+
}
53+
54+
55+
return answer
56+
}
57+
58+
59+
// 공 갯수 balls n
60+
// 나누는 갯수share m
61+
```
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
## 문제 설명
2+
머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 letter가 매개변수로 주어질 때, letter를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
3+
모스부호는 다음과 같습니다.
4+
5+
```json
6+
morse = {
7+
'.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',
8+
'--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',
9+
'--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',
10+
'...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
11+
'-.--':'y','--..':'z'
12+
}
13+
```
14+
## 제한사항
15+
1 ≤ letter의 길이 ≤ 1,000
16+
return값은 소문자입니다.
17+
letter의 모스부호는 공백으로 나누어져 있습니다.
18+
letter에 공백은 연속으로 두 개 이상 존재하지 않습니다.
19+
해독할 수 없는 편지는 주어지지 않습니다.
20+
편지의 시작과 끝에는 공백이 없습니다.
21+
## 입출력 예
22+
letter |result
23+
:--:|:--:
24+
".... . .-.. .-.. ---"| "hello"
25+
".--. -.-- - .... --- -." |"python"
26+
## 입출력 예 설명
27+
입출력 예 #1
28+
29+
- .... = h
30+
- . = e
31+
- .-.. = l
32+
- .-.. = l
33+
- --- = o
34+
- 따라서 "hello"를 return 합니다.
35+
입출력 예 #2
36+
37+
- .--. = p
38+
- -.-- = y
39+
- "- =" t
40+
- .... = h
41+
- --- = o
42+
- -. = n
43+
- 따라서 "python"을 return 합니다.
44+
- a ~ z에 해당하는 모스부호가 순서대로 담긴 배열입니다.
45+
- {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."}
46+
47+
## 문제 풀이
48+
```js
49+
function solution(letter) {
50+
const morse = {
51+
".-": "a",
52+
"-...": "b",
53+
"-.-.": "c",
54+
"-..": "d",
55+
".": "e",
56+
"..-.": "f",
57+
"--.": "g",
58+
"....": "h",
59+
"..": "i",
60+
".---": "j",
61+
"-.-": "k",
62+
".-..": "l",
63+
"--": "m",
64+
"-.": "n",
65+
"---": "o",
66+
".--.": "p",
67+
"--.-": "q",
68+
".-.": "r",
69+
"...": "s",
70+
"-": "t",
71+
"..-": "u",
72+
"...-": "v",
73+
".--": "w",
74+
"-..-": "x",
75+
"-.--": "y",
76+
"--..": "z"
77+
};
78+
var voidLetter = " ";
79+
var letterList = [...(letter+voidLetter)];
80+
var decode = [];
81+
var morsDec = [];
82+
for (var i = 0; i < letterList.length; i++) {
83+
if (letterList[i] !== " ") {
84+
decode.push(letterList[i]);
85+
console.log(decode);
86+
} else {
87+
var decodedLetter = decode.join("");
88+
console.log(decodedLetter);
89+
morsDec.push(morse[decodedLetter]);
90+
decode = [];
91+
}
92+
}
93+
94+
var answer = morsDec.join("");
95+
console.log(answer);
96+
return answer;
97+
}
98+
```
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
## 문제 설명
2+
정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.
3+
4+
## 제한사항
5+
- 2 ≤ numbers의 길이 ≤ 30
6+
- 0 ≤ numbers의 원소 ≤ 1,000
7+
- 0 ≤num1 < num2 < numbers의 길이
8+
## 입출력 예
9+
numbers| num1| num2 |result
10+
:--:|:--:|:--:|:--:|
11+
[1, 2, 3, 4, 5] |1| 3| [2, 3, 4]
12+
[1, 3, 5]| 1| 2| [3, 5]
13+
## 입출력 예 설명
14+
입출력 예 #1
15+
16+
- [1, 2, 3, 4, 5]의 1번째 인덱스 2부터 3번째 인덱스 4 까지 자른 [2, 3, 4]를 return 합니다.
17+
18+
입출력 예 #2
19+
20+
- [1, 3, 5]의 1번째 인덱스 3부터 2번째 인덱스 5까지 자른 [3, 5]를 return 합니다.
21+
22+
## 문제 풀이
23+
```js
24+
function solution(numbers, num1, num2) {
25+
var answer = [];
26+
if(num2 > num1 ){
27+
answer = numbers.slice(num1,num2+1)
28+
console.log(answer)
29+
}
30+
31+
return answer;
32+
}
33+
```
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
## 문제 설명
2+
3+
순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.
4+
5+
## 제한사항
6+
- 1 ≤ n ≤ 1,000,000
7+
## 입출력 예
8+
n |result
9+
:--:|:--:
10+
20 |6
11+
100 |9
12+
## 입출력 예 설명
13+
입출력 예 #1
14+
15+
- n이 20 이므로 곱이 20인 순서쌍은 (1, 20), (2, 10), (4, 5), (5, 4), (10, 2), (20, 1) 이므로 6을 return합니다.
16+
17+
입출력 예 #2
18+
19+
- n이 100 이므로 곱이 100인 순서쌍은 (1, 100), (2, 50), (4, 25), (5, 20), (10, 10), (20, 5), (25, 4), (50, 2), (100, 1) 이므로 9를 return합니다.
20+
21+
22+
## 문제 풀이
23+
```js
24+
function solution(n) {
25+
var cnt = 0;
26+
for (i = n; i > 0; i--){
27+
if(n % i == 0){
28+
cnt++;
29+
}
30+
}
31+
var answer = cnt;
32+
return answer;
33+
34+
}
35+
36+
37+
// 두 숫자의 곱이 n인 자연수
38+
39+
//10 => 1,10 2,5 10,1 5,2 순서쌍의 원소의 순서가 달라도 독립적인 경우의 수로 인정하기 때문에, 나누어 떨어지는 횟수로 순서쌍의 갯수를 파악할수 있음!
40+
```
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
## 문제 설명
2+
우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.
3+
4+
## 제한사항
5+
- age는 자연수입니다.
6+
- age ≤ 1,000
7+
- PROGRAMMERS-962 행성은 알파벳 소문자만 사용합니다.
8+
## 입출력 예
9+
age| result
10+
:--:|:--:|
11+
23 |"cd"
12+
51| "fb"
13+
100| "baa"
14+
15+
## 입출력 예 설명
16+
입출력 예 #1
17+
18+
- age가 23이므로 "cd"를 return합니다.
19+
20+
입출력 예 #2
21+
22+
- age가 51이므로 "fb"를 return합니다.
23+
24+
입출력 예 #3
25+
26+
- age가 100이므로 "baa"를 return합니다.
27+
28+
## 문제 풀이
29+
```js
30+
function solution(age) {
31+
var translate = ["a","b","c","d","e","f","g","h","i","j"]
32+
var stringAge = age.toString()
33+
var ageList = [...stringAge]
34+
var answer = ''
35+
for (i = 0; i < ageList.length ; i++){
36+
answer = answer + translate[ageList[i]]
37+
}
38+
return answer;
39+
}
40+
```

0 commit comments

Comments
 (0)