Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 43bc643

Browse files
Merge pull request codeisneverodd#2 from jaewon1676/main
Add 19 solutions by jaewon1676. No new problem added.
2 parents 3caacd0 + 16cde1f commit 43bc643

19 files changed

+444
-5
lines changed

‎level-1/3진법-뒤집기.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,11 @@ const decimalToTernaryReversed = num => {
2424
}
2525
ternary += num.toString()
2626
return ternary
27+
}
28+
29+
//정답 3 - jaewon1676
30+
function solution(n) {
31+
var answer = n.toString(3).split('').reverse().join('')
32+
33+
return parseInt(answer, 3)
2734
}

‎level-1/[1차]-비밀지도.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,24 @@ function solution(n, arr1, arr2) {
3333
}
3434
answer = answer2D.map(row => row.join(''))
3535
return answer;
36-
}
36+
}
37+
38+
//정답 3 - jaewon1676
39+
function solution(n, arr1, arr2) {
40+
let answer = [];
41+
for (let i=0; i<n; i++){
42+
let temp = (arr1[i] | arr2[i]).toString(2)
43+
let line = []; // 한 행의 모든 2진수 보관
44+
45+
for (let j=temp.length - n; j< temp.length; j++){
46+
if (temp[j] == 1) {line.push('#')}
47+
else {line.push(' ')}
48+
}
49+
answer.push(line.join(''))
50+
}
51+
return answer
52+
}
53+
/* 풀이 과정
54+
1. 배열 arr1, arr2 을 2진수로 변한한다. 이 때, 하나라도 1일 시에는 1로 변환하고, 그렇지 않으면 0을 반환한다.
55+
2. 9번의 반복문을 행의 길이만큼 돌려 1이면 #, 그렇지 않으면 띄어쓰기를 push 해준다.
56+
3. 행의 배열의 원소를 join 메서드를 사용하여 문자열로 합친다.*/

‎level-1/로또의-최고-순위와-최저-순위.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,42 @@ function hit(lottos, win_nums) {
4242
return result
4343
}
4444

45+
// 정답 3 - jaewon1676
46+
function solution(lottos, win_nums) {
47+
var answer = [];
48+
const correct = lottos.filter(lotto => win_nums.includes(lotto)).length;
49+
// lottos배열을 순회하며 당첨배열에 있는 수를 return 하고 총 개수를 correct에 저장
50+
51+
const zeros = lottos.filter(lotto => lotto === 0).length;
52+
// lottos배열을 순회하며 0인 총 개수를 zeros에 저장
53+
54+
let min = 7-correct >= 6 ? 6 : 7-correct;
55+
56+
let max = min-zeros < 1 ? 1 : min-zeros;
57+
58+
answer = [max,min]
59+
60+
return answer;
61+
}
4562

63+
// 정답 4 - jaewon1676
64+
function solution(lottos, win_nums) {
65+
var answer = [];
66+
let max = 7;
67+
let min = 7;
68+
console.log(lottos)
69+
console.log(win_nums)
70+
for(let i=0; i<6; i++){
71+
if (lottos.includes(win_nums[i])){
72+
max--;
73+
}
74+
}
75+
min = max;
76+
for(let i=0; i<6; i++){
77+
if (lottos[i] == 0) min--;
78+
}
79+
if (max == 7) max = 6
80+
if (min == 7) min = 6
81+
answer = [min, max]
82+
return answer;
83+
}

‎level-1/숫자-문자열과-영단어.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,23 @@ function solution(s) {
2323
}
2424
answer = Number(answerString)
2525
return answer;
26+
}
27+
28+
//정답 3 - jaewon1676
29+
function solution(s) {
30+
let answer = 0;
31+
32+
s = s.replace(/zero/g, 0);
33+
s = s.replace(/one/g, 1);
34+
s = s.replace(/two/g, 2);
35+
s = s.replace(/three/g, 3);
36+
s = s.replace(/four/g, 4);
37+
s = s.replace(/five/g, 5);
38+
s = s.replace(/six/g, 6);
39+
s = s.replace(/seven/g, 7);
40+
s = s.replace(/eight/g, 8);
41+
s = s.replace(/nine/g, 9);
42+
43+
answer = Number(s);
44+
return answer;
2645
}

‎level-1/신고-결과-받기.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,35 @@ function solution(id_list, report, k) {
3535

3636
return answer
3737
}
38+
39+
//정답 2 - jaewon1676
40+
function solution(id_list, report, k) {
41+
42+
let answer = new Array(id_list.length).fill(0)
43+
let report_list = {} // 신고당한 ID
44+
45+
// key, value 형식의 report_list 객체를 만든다.
46+
id_list.map((user)=>{
47+
report_list[user] = [] //key = userid , value = 빈 배열을 가지는 객체
48+
})
49+
// report_list { muzi: [], frodo: [], apeach: [], neo: [] }
50+
51+
// 유저가 신고한 ID를 report_list 객체에 넣어주기 위해 순회한다.
52+
report.map((user)=>{
53+
const [user_id, report_id] = user.split(' ')
54+
// report 값에서 띄어쓰기로 구분된 문자열을 자르고 user_id, report_id로 각각 넣어준다.
55+
if(!report_list[report_id].includes(user_id)){
56+
report_list[report_id].push(user_id)
57+
// 배열에 포함하는지 여부를 확인하여 포함하지 않을때 신고자의 이름을 추가하였다.
58+
}
59+
60+
})
61+
for(const key in report_list){ // report_list의 index 순회
62+
if(report_list[key].length >= k){
63+
report_list[key].map((user)=>{
64+
answer[id_list.indexOf(user)] += 1
65+
})
66+
}
67+
}
68+
return answer
69+
}

‎level-1/신규-아이디-추천.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,35 @@ function solution(new_id) {
4444
break
4545
}
4646
return answer
47+
}
48+
49+
//정답 3 - jaewon1676
50+
function solution(new_id) {
51+
// 1 소문자로 치환
52+
let answer = new_id.toLowerCase()
53+
54+
// 2 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 문자 제거.
55+
.replace(/[^a-z0-9-_.]/gi, '')
56+
57+
// 3 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환
58+
.replace(/[.]{2,}/gi, '.')
59+
60+
// 4 마침표(.)가 처음이나 끝에 위치하면 제거
61+
.replace(/^[.]|[.]$/gi,'');
62+
63+
// 5 빈 문자열이면 a 대입
64+
if(answer==='') answer = 'a';
65+
66+
// 6 length > 15이면 그 뒤의 문자들은 제거
67+
if(answer.length > 15){
68+
answer = answer.substring(0, 15);
69+
// 마침표(.)가 끝에 위치하면 마침표(.)제거
70+
answer = answer.replace(/[.]$/gi,'');
71+
}
72+
73+
// 7 length < 3이면 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 붙임
74+
while(answer.length < 3){
75+
answer += answer[answer.length-1];
76+
}
77+
return answer;
4778
}

‎level-1/실패율.js

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,44 @@ function solution(N, stages) {
3030
const sortedRate = rateNIndex.sort((a, b) => b[0] - a[0])
3131
answer = sortedRate.map(stage => stage[1])
3232
return answer;
33-
}
33+
}
34+
35+
//정답 3 - jaewon1676
36+
function solution(N, stages) {
37+
let map = Array.from(Array(N), () => Array(2).fill(0))
38+
let answer = Array(N).fill(0, 0, N); // 스테이지별 탈락자 수
39+
let rate = Array(N).fill(0, 0, N); // 스테이지별 실패율
40+
let count = 0;
41+
42+
stages.sort(function(a, b){ return a - b}) // 난이도 오름차순 정렬
43+
for (let i=1; i<=N; i++){
44+
while(1){ // i 스테이지의 실패율 계산
45+
if (stages[0] == i){
46+
answer[i-1] += 1
47+
count += 1
48+
stages.shift();
49+
}
50+
else break;
51+
}
52+
rate[i-1] += answer[i-1]/(stages.length + count) // 실패율 계산
53+
54+
count = 0
55+
56+
map[i-1][0] = i;
57+
map[i-1][1] = rate[i-1];
58+
59+
}
60+
map.sort((a, b) => b[1] - a[1]); // value값(실패율) 기준 내림차순정렬
61+
let stack = [] // 답
62+
for(let i=0; i<map.length; i++){
63+
stack.push(map[i][0])
64+
}
65+
66+
return stack
67+
}
68+
/* 풀이 과정
69+
1. 스테이지를 정렬 후 난이도 N과 같은 스테이지가 맨 앞에 있는지 찾아 찾으면 shift, 찾지 못하면 다음 난이도로 넘어간다.
70+
2. 실패율을 계산해주기 위해, 스테이지별 탈락자 수,스테이지별 실패율 배열을 생성하여 각각, 계산해준다.
71+
3. 계산 해준 값들을 2차원 배열 map 객체에 넣어준다. 2차원으로 한 이유는 index값과, 실패율 값을 같이 넣어 정렬 시에도 index값을 유지 하기 위해서.
72+
4. 실패율을 내림차순(같으면 스테이지가 낮은거부터 오름차순)으로 정렬하여 출력해준다.
73+
*/

‎level-1/완주하지-못한-선수.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,24 @@ function solution(participant, completion) {
1010
}
1111
answer = participant[participant.length - 1]
1212
return answer
13+
}
14+
15+
//정답 2 - jaewon1676
16+
function solution(participant, completion) {
17+
var answer = '';
18+
for (let i=0; i<participant.length; i++){
19+
for (let j=0; j<completion.length; j++){
20+
if (participant[i] === completion[j]) {
21+
console.log(participant,completion)
22+
participant.splice(i, 1)
23+
completion.splice(j, 1)
24+
i--;
25+
j--;
26+
console.log(participant,completion)
27+
break;
28+
}
29+
}
30+
}
31+
32+
return participant[0]
1333
}

‎level-1/음양-더하기.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,20 @@ function solution(absolutes, signs) {
1313
for (let i = 0; i < absolutes.length; i++) {
1414
answer += signs[i] ? absolutes[i] : -1 * absolutes[i]
1515
}
16+
return answer;
17+
}
18+
19+
//정답 3 - jaewon1676
20+
function solution(absolutes, signs) {
21+
var answer = 0
22+
for(var i=0; i<absolutes.length; i++){
23+
if (signs[i] === false){
24+
answer = answer - absolutes[i]
25+
}
26+
else{
27+
answer = answer + absolutes[i]
28+
}
29+
}
30+
1631
return answer;
1732
}

‎level-1/크레인-인형뽑기-게임.js

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,34 @@ function solution(board, moves) {
2222
})
2323

2424
return answer;
25-
}
25+
}
26+
27+
//정답 2 - jaewon1676
28+
function solution(board, moves) {
29+
var answer = 0; // 인형을 터뜨린 횟수
30+
let basket = []; // 바구니
31+
let crane = 0; // 크레인의 행의 위치
32+
for (let i=0; i<moves.length; i++){
33+
crane = moves[i] - 1; // crane = 0
34+
for (let j=0; j<board.length; j++){
35+
if (board[j][crane] == 0) continue;
36+
else if (board[j][crane] != 0){
37+
basket.push(board[j][crane])
38+
board[j][crane] = 0
39+
if (basket[basket.length-1] == basket[basket.length-2]){
40+
basket.pop();
41+
basket.pop();
42+
answer += 2;
43+
}
44+
break;
45+
}
46+
}
47+
}
48+
49+
return answer;
50+
}
51+
/* 풀이 과정
52+
1. 입력받은 moves의 length만큼 for문을 돌린다.
53+
2. 크레인에 찾고자 하는 행을 저장하여 제일 윗부분부터 탐색한다., 제일 윗부분이 비어있으면 다음 행으로 넘어가면서 탐색 한다.
54+
3. 값이 들어있으면 해당 값을 바구니에 push 해주고, 비워준다.
55+
4. 바구니 배열의 끝부분에 같은 인형 값이 연속되어있으면 연속 된 인형들을 pop 해주고, answer에 인형이 터진 횟수인 2를 더해준다. */

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /