diff --git a/Challenge/DahyunLim/028.2-gram/README.md b/Challenge/DahyunLim/028.2-gram/README.md new file mode 100644 index 0000000..3a0dfe1 --- /dev/null +++ b/Challenge/DahyunLim/028.2-gram/README.md @@ -0,0 +1,23 @@ +# 문제28 : 2-gram + +**2-gram**이란 문자열에서 2개의 연속된 요소를 출력하는 방법입니다. + +예를 들어 'Javascript'를 2-gram으로 반복해 본다면 다음과 같은 결과가 나옵니다. + +```jsx +**입력** +Javascript + +**출력** +J a +a v +v a +a s +s c +c r +r i +i p +p t +``` + +입력으로 문자열이 주어지면 **2-gram**으로 출력하는 프로그램을 작성해 주세요. \ No newline at end of file diff --git a/Challenge/DahyunLim/028.2-gram/solve.js b/Challenge/DahyunLim/028.2-gram/solve.js new file mode 100644 index 0000000..a678f42 --- /dev/null +++ b/Challenge/DahyunLim/028.2-gram/solve.js @@ -0,0 +1,32 @@ +// # 문제28 : 2-gram + +// **2-gram**이란 문자열에서 2개의 연속된 요소를 출력하는 방법입니다. + +// 예를 들어 'Javascript'를 2-gram으로 반복해 본다면 다음과 같은 결과가 나옵니다. + + +// **입력** +// Javascript + +// **출력** +// J a +// a v +// v a +// a s +// s c +// c r +// r i +// i p +// p t + + +// 입력으로 문자열이 주어지면 **2-gram**으로 출력하는 프로그램을 작성해 주세요. +const word = "Javascript"; + +function twoGram(word) { + for (let i = 0; i < word.length - 1; i++) { + console.log(word[i], word[i + 1]); + } +} + +twoGram(word); \ No newline at end of file diff --git "a/Challenge/DahyunLim/029.\353\214\200\353\254\270\354\236\220/README.md" "b/Challenge/DahyunLim/029.\353\214\200\353\254\270\354\236\220/README.md" new file mode 100644 index 0000000..287a235 --- /dev/null +++ "b/Challenge/DahyunLim/029.\353\214\200\353\254\270\354\236\220/README.md" @@ -0,0 +1,5 @@ +# 문제29 : 대문자만 지나가세요 + +진구는 영어 학원 아르바이트를 하고 있습니다. 반 아이들은 알파벳을 공부하는 학생들인데 오늘은 대문자 쓰기 시험을 봤습니다. + +알파벳 하나만을 입력하고 그 알파벳이 대문자이면 YES를 아니면 NO를 출력하는 프로그램을 만들어 주세요. \ No newline at end of file diff --git "a/Challenge/DahyunLim/029.\353\214\200\353\254\270\354\236\220/solve.js" "b/Challenge/DahyunLim/029.\353\214\200\353\254\270\354\236\220/solve.js" new file mode 100644 index 0000000..0d480b2 --- /dev/null +++ "b/Challenge/DahyunLim/029.\353\214\200\353\254\270\354\236\220/solve.js" @@ -0,0 +1,16 @@ +// 문제29 : 대문자만 지나가세요 + +// 진구는 영어 학원 아르바이트를 하고 있습니다. 반 아이들은 알파벳을 공부하는 학생들인데 오늘은 대문자 쓰기 시험을 봤습니다. + +// 알파벳 하나만을 입력하고 그 알파벳이 대문자이면 YES를 아니면 NO를 출력하는 프로그램을 만들어 주세요. + +function solution(string) { + if (string === string.toUpperCase()) { + console.log('Yes') + } else { + console.log('NO') + } +} + +const words = prompt('알파벳 하나를 입력하세요') +solution(words) diff --git "a/Challenge/HeejinKim/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/README.md" "b/Challenge/HeejinKim/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/README.md" new file mode 100644 index 0000000..36a32d4 --- /dev/null +++ "b/Challenge/HeejinKim/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/README.md" @@ -0,0 +1,13 @@ +# 문제38 : 호준이의 아르바이트 + +호준이는 아르바이트로 영어 학원에서 단어 시험지를 채점하는 일을 하고 있다. 호준이가 일하는 학원은 매번 1위부터 3위까지의 학생에게 상으로 사탕을 준다. 그런데 오늘은 마침 사탕이 다 떨어져서 호준이가 채점을 하고 점수를 보내면, 당신이 아이들의 숫자만큼 사탕을 사러 가기로 했다. + +1위 ~ 3위 학생은 여러명일 수 있고 1~3위 학생 중 중복되는 학생까지 포함하여 사탕을 사기로 한다. +**학생들의 점수를 공백으로 구분하여 입력을 받고 사탕을 받을 학생의 수를 출력하세요.** + +```jsx +**입출력** + +입력 : 97 86 75 66 55 97 85 97 97 95 +출력 : 6 +``` \ No newline at end of file diff --git "a/Challenge/HeejinKim/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/solve.js" "b/Challenge/HeejinKim/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/solve.js" new file mode 100644 index 0000000..ad4b8b7 --- /dev/null +++ "b/Challenge/HeejinKim/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/solve.js" @@ -0,0 +1,36 @@ +/* +# 문제38 : 호준이의 아르바이트 + +호준이는 아르바이트로 영어 학원에서 단어 시험지를 채점하는 일을 하고 있다. 호준이가 일하는 학원은 매번 1위부터 3위까지의 학생에게 상으로 사탕을 준다. +그런데 오늘은 마침 사탕이 다 떨어져서 호준이가 채점을 하고 점수를 보내면, 당신이 아이들의 숫자만큼 사탕을 사러 가기로 했다. + +1위 ~ 3위 학생은 여러명일 수 있고 1~3위 학생 중 중복되는 학생까지 포함하여 사탕을 사기로 한다. +**학생들의 점수를 공백으로 구분하여 입력을 받고 사탕을 받을 학생의 수를 출력하세요.** + +```jsx +**입출력** + +입력 : 97 86 75 66 55 97 85 97 97 95 +출력 : 6 +``` +*/ + +let array = prompt("학생들의 점수를 공백으로 구분하여 입력해주세요").split(" "); + +array.sort((a, b) => b - a); + +let count = 0; +let result = []; + +for (let i = 0; i < array.length; i++) { + result.push(array[i]); + if (array[i] != array[i + 1]) { + count++; + } + if (count === 3) { + break; + } +} + +console.log(`입력 : ${array} +출력 : ${result.length}`); diff --git "a/Challenge/HeejinKim/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" "b/Challenge/HeejinKim/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" new file mode 100644 index 0000000..3b0af06 --- /dev/null +++ "b/Challenge/HeejinKim/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" @@ -0,0 +1,18 @@ +# 문제39 : 오타 수정하기 + +혜원이는 평소 영타가 빠르고 정확한 것을 친구들에게 자랑하고 다녔습니다. 반 친구들이 혜원이의 타자 속도가 빠르다는 것을 모두 알게 되자 혜원이는 모두의 앞에서 타자 실력을 보여주게 됩니다. + +그런데 막상 보여주려니 긴장이 되서 문장의 모든 e를 q로 잘못 친 것을 발견했습니다. +혜원이는 프로그램을 돌려 재빠르게 모든 q를 e로 바꾸는 프로그램을 작성하려고 합니다. + +**문장이 입력되면 모든 q를 e로 바꾸는 프로그램을 작성해 주세요.** + +```jsx +**입출력** + +입력 : querty +출력 : euerty + +입력 : hqllo my namq is hyqwon +출력 : hello my name is hyewon +``` \ No newline at end of file diff --git "a/Challenge/HeejinKim/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" "b/Challenge/HeejinKim/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" new file mode 100644 index 0000000..8f70156 --- /dev/null +++ "b/Challenge/HeejinKim/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" @@ -0,0 +1,25 @@ +/* +# 문제39 : 오타 수정하기 + +혜원이는 평소 영타가 빠르고 정확한 것을 친구들에게 자랑하고 다녔습니다. 반 친구들이 혜원이의 타자 속도가 빠르다는 것을 모두 알게 되자 혜원이는 모두의 앞에서 타자 실력을 보여주게 됩니다. + +그런데 막상 보여주려니 긴장이 되서 문장의 모든 e를 q로 잘못 친 것을 발견했습니다. +혜원이는 프로그램을 돌려 재빠르게 모든 q를 e로 바꾸는 프로그램을 작성하려고 합니다. + +**문장이 입력되면 모든 q를 e로 바꾸는 프로그램을 작성해 주세요.** + +```jsx +**입출력** + +입력 : querty +출력 : euerty + +입력 : hqllo my namq is hyqwon +출력 : hello my name is hyewon +``` +*/ + +let input = prompt('문장을 입력하세요') +let result = input.replaceAll('q', 'e') +console.log(`입력 : ${input} +출력 : ${result}`) \ No newline at end of file diff --git a/Challenge/HeelaeLim/042.2020/README.md b/Challenge/HeelaeLim/042.2020/README.md new file mode 100644 index 0000000..25e84a4 --- /dev/null +++ b/Challenge/HeelaeLim/042.2020/README.md @@ -0,0 +1,12 @@ +# 문제 42 : 2020 + +2020년 1월 1일은 수요일입니다. 2020년 a월 b일은 무슨 요일일까요? +두 수 a,b를 입력받아 2020년 a월 b일이 무슨 요일인지 리턴하는 함수 solution을 완성하세요. +요일의 이름은 일요일부터 토요일까지 각각 SUN, MON, TUE, WED, THU, FRI, SAT입니다. + +예를 들어 a = 5, b = 24라면 5월 24일은 일요일이므로 문자열 "SUN"을 반환하세요. + +**제한 조건** +2020년은 윤년입니다. +2020년 a월 b일은 실제로 있는 날입니다. +(13월 26일이나 2월 45일 같은 날짜는 주어지지 않습니다.) diff --git a/Challenge/HeelaeLim/042.2020/solve.js b/Challenge/HeelaeLim/042.2020/solve.js new file mode 100644 index 0000000..e04f6af --- /dev/null +++ b/Challenge/HeelaeLim/042.2020/solve.js @@ -0,0 +1,22 @@ +/* +# 문제 42 : 2020 + +2020년 1월 1일은 수요일입니다. 2020년 a월 b일은 무슨 요일일까요? +두 수 a,b를 입력받아 2020년 a월 b일이 무슨 요일인지 리턴하는 함수 solution을 완성하세요. +요일의 이름은 일요일부터 토요일까지 각각 SUN, MON, TUE, WED, THU, FRI, SAT입니다. + +예를 들어 a = 5, b = 24라면 5월 24일은 일요일이므로 문자열 "SUN"을 반환하세요. + +**제한 조건** +2020년은 윤년입니다. +2020년 a월 b일은 실제로 있는 날입니다. +(13월 26일이나 2월 45일 같은 날짜는 주어지지 않습니다.) +*/ + +function TwentyTwenty() { + let number = prompt("숫자 a와 b를 입력하세요").split(" "); + let date = new Date(`2020.${number[0]}.${number[1]}`); + return date.toLocaleString("en-US", { weekday: "short" }).toUpperCase(); +} + +TwentyTwenty(); diff --git a/Challenge/HeelaeLim/043.Binary/README.md b/Challenge/HeelaeLim/043.Binary/README.md new file mode 100644 index 0000000..5434d02 --- /dev/null +++ b/Challenge/HeelaeLim/043.Binary/README.md @@ -0,0 +1,8 @@ +# 문제 43 : 10진수를 2진수로 + +우리가 흔히 사용하는 숫자 1, 8, 19, 28893 등등...은 10진수 체계입니다. +이를 컴퓨터가 알아들을 수 있는 2진수로 바꾸려고 합니다. 어떻게 해야할까요? + +예를 들어 13은 2^3 + 2^2 + 2^0 = 13 이기 때문에 1101로 표현합니다. + +**사용자에게 숫자를 입력받고 이를 2진수로 바꾸고 그 값을 출력해주세요.** diff --git a/Challenge/HeelaeLim/043.Binary/solve.js b/Challenge/HeelaeLim/043.Binary/solve.js new file mode 100644 index 0000000..8db6240 --- /dev/null +++ b/Challenge/HeelaeLim/043.Binary/solve.js @@ -0,0 +1,17 @@ +/* +# 문제 43 : 10진수를 2진수로 + +우리가 흔히 사용하는 숫자 1, 8, 19, 28893 등등...은 10진수 체계입니다. +이를 컴퓨터가 알아들을 수 있는 2진수로 바꾸려고 합니다. 어떻게 해야할까요? + +예를 들어 13은 2^3 + 2^2 + 2^0 = 13 이기 때문에 1101로 표현합니다. + +**사용자에게 숫자를 입력받고 이를 2진수로 바꾸고 그 값을 출력해주세요.** +*/ + +function Binary() { + let number = prompt("숫자를 입력하세요"); + return parseInt(number).toString(2); +} + +Binary(); diff --git a/Challenge/HeelaeLim/044.Sum/README.md b/Challenge/HeelaeLim/044.Sum/README.md new file mode 100644 index 0000000..576a732 --- /dev/null +++ b/Challenge/HeelaeLim/044.Sum/README.md @@ -0,0 +1,15 @@ +# 문제 44 : 각 자리수의 합 + +**사용자가 입력한 양의 정수의 각 자리수의 합을 구하는 프로그램**을 만들어주세요. + +**예를 들어** +18234 = 1 + 8 + 2 + 3 + 4 이고 정답은 18입니다. +3849 = 3 + 8 + 4 + 9 이고 정답은 24입니다. + +입출력 + +입력: 18234 +출력: 18 + +입력: 3849 +출력: 24 diff --git a/Challenge/HeelaeLim/044.Sum/solve.js b/Challenge/HeelaeLim/044.Sum/solve.js new file mode 100644 index 0000000..ba9d199 --- /dev/null +++ b/Challenge/HeelaeLim/044.Sum/solve.js @@ -0,0 +1,24 @@ +/* +# 문제 44 : 각 자리수의 합 + +**사용자가 입력한 양의 정수의 각 자리수의 합을 구하는 프로그램**을 만들어주세요. + +**예를 들어** +18234 = 1 + 8 + 2 + 3 + 4 이고 정답은 18입니다. +3849 = 3 + 8 + 4 + 9 이고 정답은 24입니다. + +입출력 + +입력: 18234 +출력: 18 + +입력: 3849 +출력: 24 +*/ + +function Sum() { + let number = prompt("양의 정수를 입력하세요").split(""); + return number.reduce((a, b) => parseInt(a) + parseInt(b)); +} + +Sum(); diff --git a/Challenge/HeelaeLim/045.getTime/README.md b/Challenge/HeelaeLim/045.getTime/README.md new file mode 100644 index 0000000..9d04871 --- /dev/null +++ b/Challenge/HeelaeLim/045.getTime/README.md @@ -0,0 +1,5 @@ +# 문제 45 : getTime()함수 사용하기 + +Date객체의 메소드 중 하나인 getTime()은 1970년 1월 1일 0시 0분 0초 이후부터 지금까지 흐른 시간을 천분의 1초 단위(ms)로 반환합니다. + +이를 이용하여 **현재 연도(2022)를 출력해보세요** diff --git a/Challenge/HeelaeLim/045.getTime/solve.js b/Challenge/HeelaeLim/045.getTime/solve.js new file mode 100644 index 0000000..2b0f16f --- /dev/null +++ b/Challenge/HeelaeLim/045.getTime/solve.js @@ -0,0 +1,14 @@ +/* +# 문제 45 : getTime()함수 사용하기 + +Date객체의 메소드 중 하나인 getTime()은 1970년 1월 1일 0시 0분 0초 이후부터 지금까지 흐른 시간을 천분의 1초 단위(ms)로 반환합니다. + +이를 이용하여 **현재 연도(2022)를 출력해보세요** +*/ + +function Gettime() { + let date = new Date().getTime(); + return new Date(date).getFullYear(); +} + +Gettime(); diff --git a/Challenge/HeelaeLim/046.Sum2/README.md b/Challenge/HeelaeLim/046.Sum2/README.md new file mode 100644 index 0000000..4e0141c --- /dev/null +++ b/Challenge/HeelaeLim/046.Sum2/README.md @@ -0,0 +1,5 @@ +# 문제 46 : 각 자리수의 합 2 + +1부터 20까지의(20을 포함) 모든 숫자를 일렬로 놓고 모든 자릿수의 총 합을 구하세요. + +예를 들어 10부터 15까지의 모든 숫자를 일렬로 놓으면 101112131415이고 각자리의 숫자를 더하면 21입니다. diff --git a/Challenge/HeelaeLim/046.Sum2/solve.js b/Challenge/HeelaeLim/046.Sum2/solve.js new file mode 100644 index 0000000..ad1f18e --- /dev/null +++ b/Challenge/HeelaeLim/046.Sum2/solve.js @@ -0,0 +1,19 @@ +/* +# 문제 46 : 각 자리수의 합 2 + +1부터 20까지의(20을 포함) 모든 숫자를 일렬로 놓고 모든 자릿수의 총 합을 구하세요. + +예를 들어 10부터 15까지의 모든 숫자를 일렬로 놓으면 101112131415이고 각자리의 숫자를 더하면 21입니다. +*/ + +function Sum2() { + let hey = new Array(20); + return hey + .fill(1) + .map((x, i) => x + i) + .reduce((x, y) => x.toString() + y.toString()) + .split("") + .reduce((x, y) => parseInt(x) + parseInt(y)); +} + +Sum2(); diff --git a/Challenge/HeelaeLim/047.SetApply/README.md b/Challenge/HeelaeLim/047.SetApply/README.md new file mode 100644 index 0000000..2cf1fc4 --- /dev/null +++ b/Challenge/HeelaeLim/047.SetApply/README.md @@ -0,0 +1,18 @@ +# 문제 46 : 각 자리수의 합 2 + +바울랩에서는 3월 29일 제주대학교에서 '제주 빅데이터 사회혁신 해커톤' 행사를 주최하게 되었습니다. 이에 구글 설문지를 배포하였으나 제주대학생들이 중복해서 n개씩 설문지를 제출하였습니다. +**중복된 데이터들을 삭제하여 실제 접수 명단이 몇 명인지 알고 싶습니다.** + +아래 주어진 데이터들로부터 중복을 제거하여 **실제 접수 인원**을 출력해 주세요. + +```javaScript +const people = { + 이호준: "01050442903", + 이호상: "01051442904", + 이준호: "01050342904", + 이호준: "01050442903", + 이준: "01050412904", + 이호: "01050443904", + 이호준: "01050442903" +}; +``` diff --git a/Challenge/HeelaeLim/047.SetApply/solve.js b/Challenge/HeelaeLim/047.SetApply/solve.js new file mode 100644 index 0000000..d7a1a0e --- /dev/null +++ b/Challenge/HeelaeLim/047.SetApply/solve.js @@ -0,0 +1,36 @@ +/* +# 문제 46 : 각 자리수의 합 2 + +바울랩에서는 3월 29일 제주대학교에서 '제주 빅데이터 사회혁신 해커톤' 행사를 주최하게 되었습니다. 이에 구글 설문지를 배포하였으나 제주대학생들이 중복해서 n개씩 설문지를 제출하였습니다. +**중복된 데이터들을 삭제하여 실제 접수 명단이 몇 명인지 알고 싶습니다.** + +아래 주어진 데이터들로부터 중복을 제거하여 **실제 접수 인원**을 출력해 주세요. + +```javaScript +const people = { + 이호준: "01050442903", + 이호상: "01051442904", + 이준호: "01050342904", + 이호준: "01050442903", + 이준: "01050412904", + 이호: "01050443904", + 이호준: "01050442903" +}; +``` +*/ + +function SetApply() { + const people = { + 이호준: "01050442903", + 이호상: "01051442904", + 이준호: "01050342904", + 이호준: "01050442903", + 이준: "01050412904", + 이호: "01050443904", + 이호준: "01050442903", + }; + let setapply = new Set(Object.keys(people)); + return setapply.size; +} + +SetApply(); diff --git a/Challenge/HeelaeLim/048.Change/README.md b/Challenge/HeelaeLim/048.Change/README.md new file mode 100644 index 0000000..272f203 --- /dev/null +++ b/Challenge/HeelaeLim/048.Change/README.md @@ -0,0 +1,8 @@ +# 문제48 : 대소문자 바꿔서 출력하기 + +문자열이 주어지면 대문자와 소문자를 바꿔서 출력하는 프로그램을 작성하세요. + +입출력 + +입력 : AAABBBcccddd +출력 : aaabbbCCCDDD diff --git a/Challenge/HeelaeLim/048.Change/solve.js b/Challenge/HeelaeLim/048.Change/solve.js new file mode 100644 index 0000000..ef51680 --- /dev/null +++ b/Challenge/HeelaeLim/048.Change/solve.js @@ -0,0 +1,25 @@ +/* +# 문제48 : 대소문자 바꿔서 출력하기 + +문자열이 주어지면 대문자와 소문자를 바꿔서 출력하는 프로그램을 작성하세요. + +입출력 + +입력 : AAABBBcccddd +출력 : aaabbbCCCDDD + +*/ + +function Change() { + let String = prompt("문자열을 입력해주세요.").split(""); + for (let i = 0; i < String.length; i++) { + if (String[i] === String[i].toUpperCase()) { + String[i] = String[i].toLowerCase(); + } else { + String[i] = String[i].toUpperCase(); + } + } + return String.reduce((a, b) => a + b); +} + +Change(); diff --git a/Challenge/HeelaeLim/049.Max/README.md b/Challenge/HeelaeLim/049.Max/README.md new file mode 100644 index 0000000..c2dd703 --- /dev/null +++ b/Challenge/HeelaeLim/049.Max/README.md @@ -0,0 +1,8 @@ +# 문제49 : 최댓값 구하기 + +순서가 없는 10개의 숫자가 공백으로 구분되어 주어진다. 주어진 숫자들 중 최댓값을 반환하라. + +입출력 + +입력 : 10 9 8 7 6 5 4 3 2 1 +출력 : 10 diff --git a/Challenge/HeelaeLim/049.Max/solve.js b/Challenge/HeelaeLim/049.Max/solve.js new file mode 100644 index 0000000..27306c9 --- /dev/null +++ b/Challenge/HeelaeLim/049.Max/solve.js @@ -0,0 +1,17 @@ +/* +# 문제49 : 최댓값 구하기 + +순서가 없는 10개의 숫자가 공백으로 구분되어 주어진다. 주어진 숫자들 중 최댓값을 반환하라. + +입출력 + +입력 : 10 9 8 7 6 5 4 3 2 1 +출력 : 10 +*/ + +function Max() { + let Number = prompt("숫자를 입력해주세요").split(" "); + return Math.max(...Number); +} + +Max(); diff --git a/Challenge/HeelaeLim/050.BubbleSort/README.md b/Challenge/HeelaeLim/050.BubbleSort/README.md new file mode 100644 index 0000000..e946812 --- /dev/null +++ b/Challenge/HeelaeLim/050.BubbleSort/README.md @@ -0,0 +1,26 @@ +# 문제50 : 버블정렬 구현하기 + +버블정렬은 두 인접한 원소를 검사하여 정렬하는 방법을 말합니다. 시간 복잡도는 느리지만 코드가 단순하기 때문에 자주 사용됩니다. + +아래 코드의 빈 칸을 채워 버블 정렬을 완성해 봅시다. + +```js +function bubble(arr) { + let result = arr.slice(); + + for (let i = 0; i < result.length - 1; i++) { + for (/*빈칸을 채워주세요.*/) { + if (result[j] > result[j + 1]) { + //빈칸을 채워주세요. + } + } + } + return result; +} + +const items = prompt('입력해주세요.').split(' ').map((n) => { + return parseInt(n, 10); +}); + +console.log(bubble(items)); +``` diff --git a/Challenge/HeelaeLim/050.BubbleSort/solve.js b/Challenge/HeelaeLim/050.BubbleSort/solve.js new file mode 100644 index 0000000..281bdd0 --- /dev/null +++ b/Challenge/HeelaeLim/050.BubbleSort/solve.js @@ -0,0 +1,51 @@ +/* +# 문제50 : 버블정렬 구현하기 + +버블정렬은 두 인접한 원소를 검사하여 정렬하는 방법을 말합니다. 시간 복잡도는 느리지만 코드가 단순하기 때문에 자주 사용됩니다. + +아래 코드의 빈 칸을 채워 버블 정렬을 완성해 봅시다. + +```js +function bubble(arr) { + let result = arr.slice(); + + for (let i = 0; i < result.length - 1; i++) { + for (빈칸을 채워주세요.) { + if (result[j] > result[j + 1]) { + 빈칸을 채워주세요. + } + } + } + return result; +} + +const items = prompt('입력해주세요.').split(' ').map((n) => { + return parseInt(n, 10); +}); + +console.log(bubble(items)); +``` +*/ + +function bubble(arr) { + let result = arr.slice(); + + for (let i = 0; i < result.length - 1; i++) { + for (let j = 0; j < result.length - i; j++) { + if (result[j] > result[j + 1]) { + let temp = result[j]; + result[j] = result[j + 1]; + result[j + 1] = temp; + } + } + } + return result; +} + +const items = prompt("입력해주세요.") + .split(" ") + .map((n) => { + return parseInt(n, 10); + }); + +console.log(bubble(items)); diff --git a/Challenge/HeelaeLim/051.MergeSort/README.md b/Challenge/HeelaeLim/051.MergeSort/README.md new file mode 100644 index 0000000..124cfcb --- /dev/null +++ b/Challenge/HeelaeLim/051.MergeSort/README.md @@ -0,0 +1,54 @@ +# 문제51 : merge sort를 만들어보자 + +병합정렬(merge sort)은 대표적인 정렬 알고리즘 중 하나로 다음과 같이 동작합니다. + +> 1. 리스트의 길이가 0 또는 1이면 이미 정렬된 것으로 본다. 그렇지 않은 경우에는 + +2. 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. + +3. 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다. + +4. 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. + > + +출처 : 위키피디아 + +다음 코드의 빈칸을 채워 병합정렬을 완성해 봅시다. + +```js +function mergeSort(arr){ + if (arr.length <= 1){ + return arr; + } + + const mid = Math.floor(arr.length / 2); + const left = arr.slice(0,mid); + const right = arr.slice(mid); + + return merge(mergeSort(left), mergeSort(right)); +} + +function merge(left, right){ + let result = []; + + while (/*빈칸을 채워주세요*/ && /*빈칸을 채워주세요*/){ + if (/*빈칸을 채워주세요*/){ + result.push(left.shift()); + } else { + result.push(right.shift()); + } + } + while (left.length) { + /*빈칸을 채워주세요*/ + } + while (right.length) { + /*빈칸을 채워주세요*/ + } + + return result; +} + +const array = prompt('배열을 입력하세요').split(' ').map(n => parseInt(n, 10)); + +console.log(mergeSort(array)); +``` diff --git a/Challenge/HeelaeLim/051.MergeSort/solve.js b/Challenge/HeelaeLim/051.MergeSort/solve.js new file mode 100644 index 0000000..b6e4d31 --- /dev/null +++ b/Challenge/HeelaeLim/051.MergeSort/solve.js @@ -0,0 +1,93 @@ +/* +# 문제51 : merge sort를 만들어보자 + +병합정렬(merge sort)은 대표적인 정렬 알고리즘 중 하나로 다음과 같이 동작합니다. + +> 1. 리스트의 길이가 0 또는 1이면 이미 정렬된 것으로 본다. 그렇지 않은 경우에는 + +2. 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. + +3. 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다. + +4. 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. + > + +출처 : 위키피디아 + +다음 코드의 빈칸을 채워 병합정렬을 완성해 봅시다. + +```js +function mergeSort(arr){ + if (arr.length <= 1){ + return arr; + } + + const mid = Math.floor(arr.length / 2); + const left = arr.slice(0,mid); + const right = arr.slice(mid); + + return merge(mergeSort(left), mergeSort(right)); +} + +function merge(left, right){ + let result = []; + + while (빈칸을 채워주세요 && 빈칸을 채워주세요){ + if (빈칸을 채워주세요){ + result.push(left.shift()); + } else { + result.push(right.shift()); + } + } + while (left.length) { + 빈칸을 채워주세요 + } + while (right.length) { + 빈칸을 채워주세요 + } + + return result; +} + +const array = prompt('배열을 입력하세요').split(' ').map(n => parseInt(n, 10)); + +console.log(mergeSort(array)); +``` + +*/ + +function mergeSort(arr){ + if (arr.length <= 1){ + return arr; + } + + const mid = Math.floor(arr.length / 2); + const left = arr.slice(0,mid); + const right = arr.slice(mid); + + return merge(mergeSort(left), mergeSort(right)); +} + +function merge(left, right){ + let result = []; + + while (left && right){ + if (left[0] < right[0]){ + result.push(left.shift()); + } else { + result.push(right.shift()); + } + } + while (left.length) { + result.push(left.shift()); + } + while (right.length) { + result.push(right.shift()); + } + + return result; +} + +const array = prompt('배열을 입력하세요').split(' ').map(n => parseInt(n, 10)); + +console.log(mergeSort(array)); diff --git a/Challenge/HeelaeLim/052.QuickSort/README.md b/Challenge/HeelaeLim/052.QuickSort/README.md new file mode 100644 index 0000000..44c6e86 --- /dev/null +++ b/Challenge/HeelaeLim/052.QuickSort/README.md @@ -0,0 +1,28 @@ +# 문제52 : quick sort + +다음 빈 칸을 채워 퀵 정렬을 완성해주세요. + +```js +function quickSort(arr){ + if (arr.length <= 1){ + return arr; + } + + const pivot = arr[0]; + const left = []; + const right = []; + + for (let i=1; i parseInt(n, 10)); + +console.log(quickSort(array)); +``` diff --git a/Challenge/HeelaeLim/052.QuickSort/solve.js b/Challenge/HeelaeLim/052.QuickSort/solve.js new file mode 100644 index 0000000..e2d587a --- /dev/null +++ b/Challenge/HeelaeLim/052.QuickSort/solve.js @@ -0,0 +1,53 @@ +/* +# 문제52 : quick sort + +다음 빈 칸을 채워 퀵 정렬을 완성해주세요. + +```js +function quickSort(arr){ + if (arr.length <= 1){ + return arr; + } + + const pivot = arr[0]; + const left = []; + const right = []; + + for (let i=1; i parseInt(n, 10)); + +console.log(quickSort(array)); +``` +*/ + +function quickSort(arr){ + if (arr.length <= 1){ + return arr; + } + + const pivot = arr[0]; + const left = []; + const right = []; + + for (let i=1; i parseInt(n, 10)); + +console.log(quickSort(array)); diff --git a/Challenge/HeelaeLim/053.Parenthesis/README.md b/Challenge/HeelaeLim/053.Parenthesis/README.md new file mode 100644 index 0000000..7968cf0 --- /dev/null +++ b/Challenge/HeelaeLim/053.Parenthesis/README.md @@ -0,0 +1,8 @@ +# 문제53 : 괄호 문자열 + +괄호 문자열이란 괄호 기호인 '{', '}', '[', ']', '(', ')' 와 같은 것을 말한다. 그중 괄호의 모양이 바르게 구성된 문자열을 **바른 문자열**, 그렇지 않은 문자열을 **바르지 않은 문자열**이라 부르도록 하자. + +(())와 같은 문자열은 바른 문자열이지만 ()()) 와 같은 문자열은 바르지 않은 문자열이다. +(해당 문제에서는 소괄호만 판별하지만, 중괄호와 대괄호까지 판별해 보세요.) + +**입력으로 주어진 괄호 문자열이 바른 문자열인지 바르지 않은 문자열인지 "YES"와 "NO"로 구분된 문자열을 출력해보자.** diff --git a/Challenge/HeelaeLim/053.Parenthesis/solve.js b/Challenge/HeelaeLim/053.Parenthesis/solve.js new file mode 100644 index 0000000..b22b839 --- /dev/null +++ b/Challenge/HeelaeLim/053.Parenthesis/solve.js @@ -0,0 +1,66 @@ +/* + +# 문제53 : 괄호 문자열 + +괄호 문자열이란 괄호 기호인 '{', '}', '[', ']', '(', ')' 와 같은 것을 말한다. 그중 괄호의 모양이 바르게 구성된 문자열을 **바른 문자열**, 그렇지 않은 문자열을 **바르지 않은 문자열**이라 부르도록 하자. + +(())와 같은 문자열은 바른 문자열이지만 ()()) 와 같은 문자열은 바르지 않은 문자열이다. +(해당 문제에서는 소괄호만 판별하지만, 중괄호와 대괄호까지 판별해 보세요.) + +**입력으로 주어진 괄호 문자열이 바른 문자열인지 바르지 않은 문자열인지 "YES"와 "NO"로 구분된 문자열을 출력해보자.** + +*/ + +function DistinctionParenthesis(){ + const input = prompt('괄호 문자열을 입력하세요').split(''); + const small = input.filter((value) => value === "(" || value === ")"); + const medium = input.filter((value) => value === "{" || value === "}"); + const large = input.filter((value) => value === "[" || value === "]"); + if( small.length%2 === 1 || medium.length%2 === 1 || large.length%2 === 1 ){ + return "NO" + } else { + if( small[0] === ')' || medium[0] === '}' || large[0] === ']' ){ + return "NO" + } else if( small.filter((value) => value === ")").length !== small.length/2 || medium.filter((value) => value === "}").length !== medium.length/2 || large.filter((value) => value === "]").length !== large.length/2 ) { + return "NO" + } else { + let left = 0; + let right = 0; + for(let i = 0; i left){ + return "NO" + } + } + for(let i = 0; i left){ + return "NO" + } + } + for(let i = 0; i left){ + return "NO" + } + } + if(right === left){ + return "YES" + } + } + } +} + +DistinctionParenthesis(); \ No newline at end of file diff --git "a/Challenge/JisuKim/037.\353\260\230\354\236\245_\354\204\240\352\261\260/README.md" "b/Challenge/JisuKim/037.\353\260\230\354\236\245_\354\204\240\352\261\260/README.md" new file mode 100644 index 0000000..18cac02 --- /dev/null +++ "b/Challenge/JisuKim/037.\353\260\230\354\236\245_\354\204\240\352\261\260/README.md" @@ -0,0 +1,11 @@ +# 문제37 : 반장 선거 + +새 학기를 맞아 호준이네 반은 반장 선거를 하기로 했습니다. 그런데 표를 하나씩 개표하는 과정이 너무 번거롭게 느껴진 당신은 **학생들이 뽑은 후보들을 입력받으면 뽑힌 학생의 이름과 받은 표 수를 출력하는 프로그램**을 작성하기로 하였습니다. + +```jsx +**입력** +원범 원범 혜원 혜원 혜원 혜원 유진 유진 + +**출력** +혜원(이)가 총 4표로 반장이 되었습니다. +``` \ No newline at end of file diff --git "a/Challenge/JisuKim/037.\353\260\230\354\236\245_\354\204\240\352\261\260/solve.js" "b/Challenge/JisuKim/037.\353\260\230\354\236\245_\354\204\240\352\261\260/solve.js" new file mode 100644 index 0000000..5e11fff --- /dev/null +++ "b/Challenge/JisuKim/037.\353\260\230\354\236\245_\354\204\240\352\261\260/solve.js" @@ -0,0 +1,90 @@ +/* +# 문제37 : 반장 선거 + +새 학기를 맞아 호준이네 반은 반장 선거를 하기로 했습니다. 그런데 표를 하나씩 개표하는 과정이 너무 번거롭게 느껴진 당신은 **학생들이 뽑은 후보들을 입력받으면 뽑힌 학생의 이름과 받은 표 수를 출력하는 프로그램**을 작성하기로 하였습니다. + +```jsx +**입력** +원범 원범 혜원 혜원 혜원 혜원 유진 유진 + +**출력** +혜원(이)가 총 4표로 반장이 되었습니다. +``` +*/ +const entries = "원범 원범 혜원 혜원 혜원 혜원 유진 유진" +var arr = entries.split(" "); +var answer = []; +var set = new Set([]); +var count = 0; + + +arr.forEach((e,i) => { + set.add(e) + if (set.has(e)) { + count++; + answer.push([e + count]) + } +}) + +// function Cat(name, age) { +// this.name = name; +// this.age = age; +// } + +// const tabby1 = Cat('nana', 5) +// console.log(tabby1.name) + +// (function(name){ +// console.log(`hello ${name}`) +// })('roto') + +// var idiots = { +// name: 'idiots', +// genre: 'punk rock', +// members: { +// roto: { +// memberName: 'roto', +// play: function() { +// console.log(`band ${this.name} ${this.memberName} play start.`) +// } +// } +// } +// } + +// idiots.members.roto.play() + +// // 4번 경우에수가 많음 이따 풀기 + +// function RockBand(members) { +// this.members = members; +// this.perform = function() { +// setTimeout(function() { +// this.members.forEach(function(member) { +// member.perform() +// }, 1000) +// }) +// } +// } + +// var theOralCigarettes = new RockBand([ +// { +// name: 'takuya', +// perform: function() { +// console.log('a e u i a e u i') +// } +// } +// ]) + +// // 5번 +// const numbers = [1, 2, 3, 4, 5] +// for(var i = 0; i < numbers.length; i++) { +// setTimeout(function() { +// console.log(`number index ${i}`) +// }, 3000) +// } + +// for(var i = 0; i < 5; i++) { +// setTimeout(function() { +// console.log(`number index ${i}`) +// }, 0) +// } \ No newline at end of file diff --git "a/Challenge/JisuKim/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/README.md" "b/Challenge/JisuKim/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/README.md" new file mode 100644 index 0000000..36a32d4 --- /dev/null +++ "b/Challenge/JisuKim/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/README.md" @@ -0,0 +1,13 @@ +# 문제38 : 호준이의 아르바이트 + +호준이는 아르바이트로 영어 학원에서 단어 시험지를 채점하는 일을 하고 있다. 호준이가 일하는 학원은 매번 1위부터 3위까지의 학생에게 상으로 사탕을 준다. 그런데 오늘은 마침 사탕이 다 떨어져서 호준이가 채점을 하고 점수를 보내면, 당신이 아이들의 숫자만큼 사탕을 사러 가기로 했다. + +1위 ~ 3위 학생은 여러명일 수 있고 1~3위 학생 중 중복되는 학생까지 포함하여 사탕을 사기로 한다. +**학생들의 점수를 공백으로 구분하여 입력을 받고 사탕을 받을 학생의 수를 출력하세요.** + +```jsx +**입출력** + +입력 : 97 86 75 66 55 97 85 97 97 95 +출력 : 6 +``` \ No newline at end of file diff --git "a/Challenge/JisuKim/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/solve.js" "b/Challenge/JisuKim/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/solve.js" new file mode 100644 index 0000000..8733a31 --- /dev/null +++ "b/Challenge/JisuKim/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/solve.js" @@ -0,0 +1,36 @@ +/* +# 문제38 : 호준이의 아르바이트 + +호준이는 아르바이트로 영어 학원에서 단어 시험지를 채점하는 일을 하고 있다. 호준이가 일하는 학원은 매번 1위부터 3위까지의 학생에게 상으로 사탕을 준다. 그런데 오늘은 마침 사탕이 다 떨어져서 호준이가 채점을 하고 점수를 보내면, 당신이 아이들의 숫자만큼 사탕을 사러 가기로 했다. + +1위 ~ 3위 학생은 여러명일 수 있고 1~3위 학생 중 중복되는 학생까지 포함하여 사탕을 사기로 한다. +**학생들의 점수를 공백으로 구분하여 입력을 받고 사탕을 받을 학생의 수를 출력하세요.** + +```jsx +**입출력** + +입력 : 97 86 75 66 55 97 85 97 97 95 +출력 : 6 +``` +*/ + + +//const arr = prompt('몇점?').split(' ') + +var arr = [97, 86, 75, 66, 55, 97, 85, 97, 97, 95] + +var count = 0; + +var set = new Set([]); + +var sortArr = arr.sort((a,b) => (b-a)) + +sortArr.forEach((element) => { + if(set.size < 3) { + set.add(element) + count++; + } + return set +}) + +console.log(count) \ No newline at end of file diff --git "a/Challenge/JisuKim/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" "b/Challenge/JisuKim/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" new file mode 100644 index 0000000..3b0af06 --- /dev/null +++ "b/Challenge/JisuKim/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" @@ -0,0 +1,18 @@ +# 문제39 : 오타 수정하기 + +혜원이는 평소 영타가 빠르고 정확한 것을 친구들에게 자랑하고 다녔습니다. 반 친구들이 혜원이의 타자 속도가 빠르다는 것을 모두 알게 되자 혜원이는 모두의 앞에서 타자 실력을 보여주게 됩니다. + +그런데 막상 보여주려니 긴장이 되서 문장의 모든 e를 q로 잘못 친 것을 발견했습니다. +혜원이는 프로그램을 돌려 재빠르게 모든 q를 e로 바꾸는 프로그램을 작성하려고 합니다. + +**문장이 입력되면 모든 q를 e로 바꾸는 프로그램을 작성해 주세요.** + +```jsx +**입출력** + +입력 : querty +출력 : euerty + +입력 : hqllo my namq is hyqwon +출력 : hello my name is hyewon +``` \ No newline at end of file diff --git "a/Challenge/JisuKim/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" "b/Challenge/JisuKim/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" new file mode 100644 index 0000000..1913b05 --- /dev/null +++ "b/Challenge/JisuKim/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" @@ -0,0 +1,40 @@ +/* +# 문제39 : 오타 수정하기 + +혜원이는 평소 영타가 빠르고 정확한 것을 친구들에게 자랑하고 다녔습니다. 반 친구들이 혜원이의 타자 속도가 빠르다는 것을 모두 알게 되자 혜원이는 모두의 앞에서 타자 실력을 보여주게 됩니다. + +그런데 막상 보여주려니 긴장이 되서 문장의 모든 e를 q로 잘못 친 것을 발견했습니다. +혜원이는 프로그램을 돌려 재빠르게 모든 q를 e로 바꾸는 프로그램을 작성하려고 합니다. + +**문장이 입력되면 모든 q를 e로 바꾸는 프로그램을 작성해 주세요.** + +```jsx +**입출력** + +입력 : querty +출력 : euerty + +입력 : hqllo my namq is hyqwon +출력 : hello my name is hyewon +``` +*/ + +var result = 'hqllo my namq is hyqwon'; + +//result.replace('q', 'e') + +var arr = result.split('') + +var arr1 = []; + +arr.forEach(e => { + if(e == 'q') { + arr1.push('e') + } else { + arr1.push(e) + + } + +}) + +arr1.join("") \ No newline at end of file diff --git "a/Challenge/JisuKim/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/README.md" "b/Challenge/JisuKim/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/README.md" new file mode 100644 index 0000000..324d030 --- /dev/null +++ "b/Challenge/JisuKim/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/README.md" @@ -0,0 +1,22 @@ +# 문제40 : 놀이동산에 가자 + +테마파크에 온 원범이와 친구들은 놀이기구를 타려고 합니다. 모든 놀이기구는 한번에 타는 인원수에는 제한이 없지만 제한 무게를 넘으면 무조건 다음 기구를 타야 합니다. + +**원범이와 친구들이 총 몇 명 탈 수 있는지 알 수 있는 프로그램을 작성해 주세요.** + +첫번째 입력으로 제한 무게가 주어지고 두번째 입력으로는 함께한 친구들의 수 n이 주어집니다. +그 다음 차례대로 탑승할 친구들의 몸무게가 주어집니다. 몸무게는 무작위로 주어집니다. + +```jsx +**입력** +50 +5 +20 +20 +20 +20 +20 + +**출력** +2 +``` \ No newline at end of file diff --git "a/Challenge/JisuKim/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/solve.js" "b/Challenge/JisuKim/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/solve.js" new file mode 100644 index 0000000..6c2541b --- /dev/null +++ "b/Challenge/JisuKim/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/solve.js" @@ -0,0 +1,36 @@ +/* +# 문제40 : 놀이동산에 가자 + +테마파크에 온 원범이와 친구들은 놀이기구를 타려고 합니다. 모든 놀이기구는 한번에 타는 인원수에는 제한이 없지만 제한 무게를 넘으면 무조건 다음 기구를 타야 합니다. + +**원범이와 친구들이 총 몇 명 탈 수 있는지 알 수 있는 프로그램을 작성해 주세요.** + +첫번째 입력으로 제한 무게가 주어지고 두번째 입력으로는 함께한 친구들의 수 n이 주어집니다. +그 다음 차례대로 탑승할 친구들의 몸무게가 주어집니다. 몸무게는 무작위로 주어집니다. + +```jsx +**입력** +50 +5 +20 +20 +20 +20 +20 + +**출력** +2 +``` +*/ + +const weightLimit = '100' +const memberCount = '5' +let count = 0; +let totalWeight = 0; + +for(let i = 0; i < memberCount; i++) { + totalWeight += parseInt('50', 10); + if (totalWeight <= parseInt(weightLimit, 10)) { + count++; + } +} \ No newline at end of file diff --git "a/Challenge/JisuKim/041.\354\206\214\354\210\230\355\214\220\353\263\204/README.md" "b/Challenge/JisuKim/041.\354\206\214\354\210\230\355\214\220\353\263\204/README.md" new file mode 100644 index 0000000..11c15e3 --- /dev/null +++ "b/Challenge/JisuKim/041.\354\206\214\354\210\230\355\214\220\353\263\204/README.md" @@ -0,0 +1,5 @@ +# 문제41 : 소수판별 + +숫자가 주어지면 **소수인지 아닌지 판별하는 프로그램**을 작성해주세요. +소수이면 YES로, 소수가 아니면 NO로 출력해주세요. +(소수 : 1과 자기 자신만으로 나누어떨어지는 1보다 큰 양의 정수) \ No newline at end of file diff --git "a/Challenge/JisuKim/041.\354\206\214\354\210\230\355\214\220\353\263\204/solve.js" "b/Challenge/JisuKim/041.\354\206\214\354\210\230\355\214\220\353\263\204/solve.js" new file mode 100644 index 0000000..a553b8b --- /dev/null +++ "b/Challenge/JisuKim/041.\354\206\214\354\210\230\355\214\220\353\263\204/solve.js" @@ -0,0 +1,26 @@ +/* +# 문제41 : 소수판별 + +숫자가 주어지면 **소수인지 아닌지 판별하는 프로그램**을 작성해주세요. +소수이면 YES로, 소수가 아니면 NO로 출력해주세요. +(소수 : 1과 자기 자신만으로 나누어떨어지는 1보다 큰 양의 정수) +*/ + + +let num = Math.floor((Math.random()*9) + 1) + +function solution(n) { + for(let i = 2; i < n; i++) { + if (n % i === 0) { + console.log('no') + return false + } + } + if (n === 1){ + console.log('no') + return false + } + console.log('yes') +} + +solution(num); \ No newline at end of file diff --git "a/Challenge/JisuKim/042.2020\353\205\204/README.md" "b/Challenge/JisuKim/042.2020\353\205\204/README.md" new file mode 100644 index 0000000..6fc7600 --- /dev/null +++ "b/Challenge/JisuKim/042.2020\353\205\204/README.md" @@ -0,0 +1,12 @@ +# 문제42 : 2020년 + +2020년 1월 1일은 수요일입니다. 2020년 a월 b일은 무슨 요일일까요? +두 수 a, b를 입력받아 2020년 a월 b일이 무슨 요일인지 리턴하는 함수 solution을 완성하세요. +요일의 이름은 일요일부터 토요일까지 각각 SUN, MON, TUE, WED, THU, FRI, SAT 입니다. + +예를 들어 a = 5, b = 24라면 5월 24일은 일요일이므로 문자열 "SUN"를 반환하세요. + +**제한 조건** +2020년은 윤년입니다. +2020년 a월 b일은 실제로 있는 날입니다. +(13월 26일이나 2월 45일 같은 날짜는 주어지지 않습니다.) \ No newline at end of file diff --git "a/Challenge/JisuKim/042.2020\353\205\204/solve.js" "b/Challenge/JisuKim/042.2020\353\205\204/solve.js" new file mode 100644 index 0000000..41f87ac --- /dev/null +++ "b/Challenge/JisuKim/042.2020\353\205\204/solve.js" @@ -0,0 +1,23 @@ +/* +# 문제42 : 2020년 + +2020년 1월 1일은 수요일입니다. 2020년 a월 b일은 무슨 요일일까요? +두 수 a, b를 입력받아 2020년 a월 b일이 무슨 요일인지 리턴하는 함수 solution을 완성하세요. +요일의 이름은 일요일부터 토요일까지 각각 SUN, MON, TUE, WED, THU, FRI, SAT 입니다. + +예를 들어 a = 5, b = 24라면 5월 24일은 일요일이므로 문자열 "SUN"를 반환하세요. + +**제한 조건** +2020년은 윤년입니다. +2020년 a월 b일은 실제로 있는 날입니다. +(13월 26일이나 2월 45일 같은 날짜는 주어지지 않습니다.) +*/ + +const day = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT']; +const month = '5' +const date = '5' + +function solution( a , b) { + const theDay = new Date(`2020-${a}-${b}`); + day[theDay.getDay()]; +} \ No newline at end of file diff --git "a/Challenge/JisuKim/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/README.md" "b/Challenge/JisuKim/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/README.md" new file mode 100644 index 0000000..1f52218 --- /dev/null +++ "b/Challenge/JisuKim/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/README.md" @@ -0,0 +1,6 @@ +# 문제43 : 10진수를 2진수로 + +우리가 흔히 사용하는 숫자 1, 8, 19, 28893 등등...은 10진수 체계입니다. +이를 컴퓨터가 알아 들을 수 있는 2진수로 바꾸려고 합니다. 어떻게 해야할까요? + +**사용자에게 숫자를 입력받고 이를 2진수를 바꾸고 그 값을 출력해주세요.** \ No newline at end of file diff --git "a/Challenge/JisuKim/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/solve.js" "b/Challenge/JisuKim/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/solve.js" new file mode 100644 index 0000000..6d72bbe --- /dev/null +++ "b/Challenge/JisuKim/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/solve.js" @@ -0,0 +1,17 @@ +/* +# 문제43 : 10진수를 2진수로 + +우리가 흔히 사용하는 숫자 1, 8, 19, 28893 등등...은 10진수 체계입니다. +이를 컴퓨터가 알아 들을 수 있는 2진수로 바꾸려고 합니다. 어떻게 해야할까요? + +**사용자에게 숫자를 입력받고 이를 2진수를 바꾸고 그 값을 출력해주세요.** +*/ +const num = 18; + +function solution(num) { + const newNum = num.toString(2); + console.log(newNum) + +} + +solution(num) \ No newline at end of file diff --git "a/Challenge/JisuKim/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/README.md" "b/Challenge/JisuKim/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/README.md" new file mode 100644 index 0000000..c581b86 --- /dev/null +++ "b/Challenge/JisuKim/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/README.md" @@ -0,0 +1,17 @@ +# 문제44 : 각 자리수의 합 + +**사용자가 입력한 양의 정수의 각 자리수의 합을 구하는 프로그램**을 만들어주세요 + +**예를들어** +18234 = 1+8+2+3+4 이고 정답은 18 입니다. +3849 = 3+8+4+9 이고 정답은 24입니다. + +```jsx +**입출력** + +입력 : 18234 +출력 : 18 + +입력 : 3849 +출력 : 24 +``` \ No newline at end of file diff --git "a/Challenge/JisuKim/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/solve.js" "b/Challenge/JisuKim/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/solve.js" new file mode 100644 index 0000000..bb93406 --- /dev/null +++ "b/Challenge/JisuKim/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/solve.js" @@ -0,0 +1,33 @@ +/* +# 문제44 : 각 자리수의 합 + +**사용자가 입력한 양의 정수의 각 자리수의 합을 구하는 프로그램**을 만들어주세요 + +**예를들어** +18234 = 1+8+2+3+4 이고 정답은 18 입니다. +3849 = 3+8+4+9 이고 정답은 24입니다. + +```jsx +**입출력** + +입력 : 18234 +출력 : 18 + +입력 : 3849 +출력 : 24 +``` +*/ + +const num = 18234; + +function solution(num) { + const text = num + ""; + let result = 0; + + for(let i = 0; i < text.length; i++) { + result += parseInt(text[i]) + } + console.log(result) +} + +solution(num); \ No newline at end of file diff --git a/Challenge/JisuKim/045.getTime/README.md b/Challenge/JisuKim/045.getTime/README.md new file mode 100644 index 0000000..c581b86 --- /dev/null +++ b/Challenge/JisuKim/045.getTime/README.md @@ -0,0 +1,17 @@ +# 문제44 : 각 자리수의 합 + +**사용자가 입력한 양의 정수의 각 자리수의 합을 구하는 프로그램**을 만들어주세요 + +**예를들어** +18234 = 1+8+2+3+4 이고 정답은 18 입니다. +3849 = 3+8+4+9 이고 정답은 24입니다. + +```jsx +**입출력** + +입력 : 18234 +출력 : 18 + +입력 : 3849 +출력 : 24 +``` \ No newline at end of file diff --git a/Challenge/JisuKim/045.getTime/solve.js b/Challenge/JisuKim/045.getTime/solve.js new file mode 100644 index 0000000..543f807 --- /dev/null +++ b/Challenge/JisuKim/045.getTime/solve.js @@ -0,0 +1,7 @@ +// # 문제45 : getTime()함수 사용하기 + +// Date객체의 메소드 중 하나인 getTime()은 1970년 1월 1일 0시 0분 0초 이후로부터 지금까지 흐른 시간을 천분의 1초 단위(ms)로 반환합니다. + +// 이를 이용하여 **현재 연도(2019)를 출력해보세요.** + +var date = new Date(); diff --git "a/Challenge/SoyeonJang/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" "b/Challenge/SoyeonJang/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" new file mode 100644 index 0000000..3b0af06 --- /dev/null +++ "b/Challenge/SoyeonJang/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" @@ -0,0 +1,18 @@ +# 문제39 : 오타 수정하기 + +혜원이는 평소 영타가 빠르고 정확한 것을 친구들에게 자랑하고 다녔습니다. 반 친구들이 혜원이의 타자 속도가 빠르다는 것을 모두 알게 되자 혜원이는 모두의 앞에서 타자 실력을 보여주게 됩니다. + +그런데 막상 보여주려니 긴장이 되서 문장의 모든 e를 q로 잘못 친 것을 발견했습니다. +혜원이는 프로그램을 돌려 재빠르게 모든 q를 e로 바꾸는 프로그램을 작성하려고 합니다. + +**문장이 입력되면 모든 q를 e로 바꾸는 프로그램을 작성해 주세요.** + +```jsx +**입출력** + +입력 : querty +출력 : euerty + +입력 : hqllo my namq is hyqwon +출력 : hello my name is hyewon +``` \ No newline at end of file diff --git "a/Challenge/SoyeonJang/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" "b/Challenge/SoyeonJang/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" new file mode 100644 index 0000000..5060633 --- /dev/null +++ "b/Challenge/SoyeonJang/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" @@ -0,0 +1,24 @@ +/* +# 문제39 : 오타 수정하기 + +혜원이는 평소 영타가 빠르고 정확한 것을 친구들에게 자랑하고 다녔습니다. 반 친구들이 혜원이의 타자 속도가 빠르다는 것을 모두 알게 되자 혜원이는 모두의 앞에서 타자 실력을 보여주게 됩니다. + +그런데 막상 보여주려니 긴장이 되서 문장의 모든 e를 q로 잘못 친 것을 발견했습니다. +혜원이는 프로그램을 돌려 재빠르게 모든 q를 e로 바꾸는 프로그램을 작성하려고 합니다. + +**문장이 입력되면 모든 q를 e로 바꾸는 프로그램을 작성해 주세요.** + +```jsx +**입출력** + +입력 : querty +출력 : euerty + +입력 : hqllo my namq is hyqwon +출력 : hello my name is hyewon +``` +*/ + +const str = "hqllo my namq is hyqwon"; +const replaceStr = str.replace("q", "e"); +console.log(replaceStr); diff --git "a/Challenge/SoyeonJang/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/README.md" "b/Challenge/SoyeonJang/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/README.md" new file mode 100644 index 0000000..324d030 --- /dev/null +++ "b/Challenge/SoyeonJang/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/README.md" @@ -0,0 +1,22 @@ +# 문제40 : 놀이동산에 가자 + +테마파크에 온 원범이와 친구들은 놀이기구를 타려고 합니다. 모든 놀이기구는 한번에 타는 인원수에는 제한이 없지만 제한 무게를 넘으면 무조건 다음 기구를 타야 합니다. + +**원범이와 친구들이 총 몇 명 탈 수 있는지 알 수 있는 프로그램을 작성해 주세요.** + +첫번째 입력으로 제한 무게가 주어지고 두번째 입력으로는 함께한 친구들의 수 n이 주어집니다. +그 다음 차례대로 탑승할 친구들의 몸무게가 주어집니다. 몸무게는 무작위로 주어집니다. + +```jsx +**입력** +50 +5 +20 +20 +20 +20 +20 + +**출력** +2 +``` \ No newline at end of file diff --git "a/Challenge/SoyeonJang/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/solve.js" "b/Challenge/SoyeonJang/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/solve.js" new file mode 100644 index 0000000..c7cc210 --- /dev/null +++ "b/Challenge/SoyeonJang/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/solve.js" @@ -0,0 +1,40 @@ +/* +# 문제40 : 놀이동산에 가자 + +테마파크에 온 원범이와 친구들은 놀이기구를 타려고 합니다. 모든 놀이기구는 한번에 타는 인원수에는 제한이 없지만 제한 무게를 넘으면 무조건 다음 기구를 타야 합니다. + +**원범이와 친구들이 총 몇 명 탈 수 있는지 알 수 있는 프로그램을 작성해 주세요.** + +첫번째 입력으로 제한 무게가 주어지고 두번째 입력으로는 함께한 친구들의 수 n이 주어집니다. +그 다음 차례대로 탑승할 친구들의 몸무게가 주어집니다. 몸무게는 무작위로 주어집니다. + +```jsx +**입력** +50 +5 +20 +20 +20 +20 +20 + +**출력** +2 +``` +*/ + +const limit = prompt("제한 무게를 입력해 주세요."); +const person = prompt("총 탑승 인원을 입력해 주세요."); +const weight = prompt("탑승 인원의 몸무게를 각각 입력해 주세요.").split(" "); + +let total = 0; +let count = 0; + +for (let i = 0; i < weight.length; i++) { + total += parseInt(weight[i]); + if (total < limit) { + count++; + } +} + +console.log(count + "명 탑승 가능합니다."); diff --git "a/Challenge/SoyeonJang/041.\354\206\214\354\210\230\355\214\220\353\263\204/README.md" "b/Challenge/SoyeonJang/041.\354\206\214\354\210\230\355\214\220\353\263\204/README.md" new file mode 100644 index 0000000..11c15e3 --- /dev/null +++ "b/Challenge/SoyeonJang/041.\354\206\214\354\210\230\355\214\220\353\263\204/README.md" @@ -0,0 +1,5 @@ +# 문제41 : 소수판별 + +숫자가 주어지면 **소수인지 아닌지 판별하는 프로그램**을 작성해주세요. +소수이면 YES로, 소수가 아니면 NO로 출력해주세요. +(소수 : 1과 자기 자신만으로 나누어떨어지는 1보다 큰 양의 정수) \ No newline at end of file diff --git "a/Challenge/SoyeonJang/041.\354\206\214\354\210\230\355\214\220\353\263\204/solve.js" "b/Challenge/SoyeonJang/041.\354\206\214\354\210\230\355\214\220\353\263\204/solve.js" new file mode 100644 index 0000000..92bcb36 --- /dev/null +++ "b/Challenge/SoyeonJang/041.\354\206\214\354\210\230\355\214\220\353\263\204/solve.js" @@ -0,0 +1,25 @@ +/* +# 문제41 : 소수판별 + +숫자가 주어지면 **소수인지 아닌지 판별하는 프로그램**을 작성해주세요. +소수이면 YES로, 소수가 아니면 NO로 출력해주세요. +(소수 : 1과 자기 자신만으로 나누어떨어지는 1보다 큰 양의 정수) +*/ + +const num = prompt("숫자를 입력해 주세요. 소수인지 알려드립니다."); + +function primeNum(num) { + for (let i = 2; i < num; i++) { + if (num % i === 0) { + console.log("NO"); + return false; + } + } + if (num === 1) { + console.log("NO"); + return; + } + console.log("YES"); +} + +primeNum(num); diff --git "a/Challenge/SoyeonJang/042.2020\353\205\204/README.md" "b/Challenge/SoyeonJang/042.2020\353\205\204/README.md" new file mode 100644 index 0000000..6fc7600 --- /dev/null +++ "b/Challenge/SoyeonJang/042.2020\353\205\204/README.md" @@ -0,0 +1,12 @@ +# 문제42 : 2020년 + +2020년 1월 1일은 수요일입니다. 2020년 a월 b일은 무슨 요일일까요? +두 수 a, b를 입력받아 2020년 a월 b일이 무슨 요일인지 리턴하는 함수 solution을 완성하세요. +요일의 이름은 일요일부터 토요일까지 각각 SUN, MON, TUE, WED, THU, FRI, SAT 입니다. + +예를 들어 a = 5, b = 24라면 5월 24일은 일요일이므로 문자열 "SUN"를 반환하세요. + +**제한 조건** +2020년은 윤년입니다. +2020년 a월 b일은 실제로 있는 날입니다. +(13월 26일이나 2월 45일 같은 날짜는 주어지지 않습니다.) \ No newline at end of file diff --git "a/Challenge/SoyeonJang/042.2020\353\205\204/solve.js" "b/Challenge/SoyeonJang/042.2020\353\205\204/solve.js" new file mode 100644 index 0000000..061d924 --- /dev/null +++ "b/Challenge/SoyeonJang/042.2020\353\205\204/solve.js" @@ -0,0 +1,26 @@ +/* +# 문제42 : 2020년 + +2020년 1월 1일은 수요일입니다. 2020년 a월 b일은 무슨 요일일까요? +두 수 a, b를 입력받아 2020년 a월 b일이 무슨 요일인지 리턴하는 함수 solution을 완성하세요. +요일의 이름은 일요일부터 토요일까지 각각 SUN, MON, TUE, WED, THU, FRI, SAT 입니다. + +예를 들어 a = 5, b = 24라면 5월 24일은 일요일이므로 문자열 "SUN"를 반환하세요. + +**제한 조건** +2020년은 윤년입니다. +2020년 a월 b일은 실제로 있는 날입니다. +(13월 26일이나 2월 45일 같은 날짜는 주어지지 않습니다.) +*/ + +const month = 5; +const date = 24; + +function calendar(a, b) { + const day = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"]; + + const x = new Date("2020-" + a + "-" + b); + return day[x.getDay()]; +} + +console.log(calendar(month, date)); diff --git "a/Challenge/SoyeonJang/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/README.md" "b/Challenge/SoyeonJang/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/README.md" new file mode 100644 index 0000000..1f52218 --- /dev/null +++ "b/Challenge/SoyeonJang/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/README.md" @@ -0,0 +1,6 @@ +# 문제43 : 10진수를 2진수로 + +우리가 흔히 사용하는 숫자 1, 8, 19, 28893 등등...은 10진수 체계입니다. +이를 컴퓨터가 알아 들을 수 있는 2진수로 바꾸려고 합니다. 어떻게 해야할까요? + +**사용자에게 숫자를 입력받고 이를 2진수를 바꾸고 그 값을 출력해주세요.** \ No newline at end of file diff --git "a/Challenge/SoyeonJang/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/solve.js" "b/Challenge/SoyeonJang/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/solve.js" new file mode 100644 index 0000000..f5644bb --- /dev/null +++ "b/Challenge/SoyeonJang/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/solve.js" @@ -0,0 +1,13 @@ +/* +# 문제43 : 10진수를 2진수로 + +우리가 흔히 사용하는 숫자 1, 8, 19, 28893 등등...은 10진수 체계입니다. +이를 컴퓨터가 알아 들을 수 있는 2진수로 바꾸려고 합니다. 어떻게 해야할까요? + +**사용자에게 숫자를 입력받고 이를 2진수를 바꾸고 그 값을 출력해주세요.** +*/ + +const decimal = prompt("이진수로 변환할 십진수를 입력해 주세요."); +const binary = decimal.toString(2); + +console.log(binary); diff --git "a/Challenge/SoyeonJang/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/README.md" "b/Challenge/SoyeonJang/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/README.md" new file mode 100644 index 0000000..c581b86 --- /dev/null +++ "b/Challenge/SoyeonJang/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/README.md" @@ -0,0 +1,17 @@ +# 문제44 : 각 자리수의 합 + +**사용자가 입력한 양의 정수의 각 자리수의 합을 구하는 프로그램**을 만들어주세요 + +**예를들어** +18234 = 1+8+2+3+4 이고 정답은 18 입니다. +3849 = 3+8+4+9 이고 정답은 24입니다. + +```jsx +**입출력** + +입력 : 18234 +출력 : 18 + +입력 : 3849 +출력 : 24 +``` \ No newline at end of file diff --git "a/Challenge/SoyeonJang/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/solve.js" "b/Challenge/SoyeonJang/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/solve.js" new file mode 100644 index 0000000..95e50f3 --- /dev/null +++ "b/Challenge/SoyeonJang/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/solve.js" @@ -0,0 +1,29 @@ +/* +# 문제44 : 각 자리수의 합 + +**사용자가 입력한 양의 정수의 각 자리수의 합을 구하는 프로그램**을 만들어주세요 + +**예를들어** +18234 = 1+8+2+3+4 이고 정답은 18 입니다. +3849 = 3+8+4+9 이고 정답은 24입니다. + +```jsx +**입출력** + +입력 : 18234 +출력 : 18 + +입력 : 3849 +출력 : 24 +``` +*/ + +let num = 18234; +let sum = 0; + +while (num !== 0) { + sum += num % 10; + num = Math.floor(num / 10); +} + +console.log(sum); diff --git "a/Challenge/SubinChoi/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/README.md" "b/Challenge/SubinChoi/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/README.md" new file mode 100644 index 0000000..36a32d4 --- /dev/null +++ "b/Challenge/SubinChoi/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/README.md" @@ -0,0 +1,13 @@ +# 문제38 : 호준이의 아르바이트 + +호준이는 아르바이트로 영어 학원에서 단어 시험지를 채점하는 일을 하고 있다. 호준이가 일하는 학원은 매번 1위부터 3위까지의 학생에게 상으로 사탕을 준다. 그런데 오늘은 마침 사탕이 다 떨어져서 호준이가 채점을 하고 점수를 보내면, 당신이 아이들의 숫자만큼 사탕을 사러 가기로 했다. + +1위 ~ 3위 학생은 여러명일 수 있고 1~3위 학생 중 중복되는 학생까지 포함하여 사탕을 사기로 한다. +**학생들의 점수를 공백으로 구분하여 입력을 받고 사탕을 받을 학생의 수를 출력하세요.** + +```jsx +**입출력** + +입력 : 97 86 75 66 55 97 85 97 97 95 +출력 : 6 +``` \ No newline at end of file diff --git "a/Challenge/SubinChoi/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/solve.js" "b/Challenge/SubinChoi/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/solve.js" new file mode 100644 index 0000000..8f00c65 --- /dev/null +++ "b/Challenge/SubinChoi/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/solve.js" @@ -0,0 +1,62 @@ +/* +# 문제38 : 호준이의 아르바이트 + +호준이는 아르바이트로 영어 학원에서 단어 시험지를 채점하는 일을 하고 있다. 호준이가 일하는 학원은 매번 1위부터 3위까지의 학생에게 상으로 사탕을 준다. 그런데 오늘은 마침 사탕이 다 떨어져서 호준이가 채점을 하고 점수를 보내면, 당신이 아이들의 숫자만큼 사탕을 사러 가기로 했다. + +1위 ~ 3위 학생은 여러명일 수 있고 1~3위 학생 중 중복되는 학생까지 포함하여 사탕을 사기로 한다. +**학생들의 점수를 공백으로 구분하여 입력을 받고 사탕을 받을 학생의 수를 출력하세요.** + +```jsx +**입출력** + +입력 : 97 86 75 66 55 97 85 97 97 95 +출력 : 6 +``` +*/ + +// 숫자 sort로 중복없애기 +// 오름차순으로 정렬 +// 원본 배열에서 해당 0번째, 1번째, 2번째 점수가 몇개 있는지 누적시키기 +// 그 값 출력시키기 + +// 내 풀이 +const scoreArr = prompt("학생들의 점수를 입력해주세요") + .trim() + .split(" ") + .sort((a, b) => b - a); +const sortScore = new Set(scoreArr); +let newArr = []; +const three = (function () { + for (let item of sortScore) { + newArr.push(item); + if (newArr.length >= 3) { + return; + } + } +})(); +scoreArr.filter((ele) => newArr.includes(ele)).length; + +//답안 + trim()추가 +const scores = prompt("점수입력") + .trim() + .split(" ") + .map(function (n) { + return parseInt(n, 10); + }); + +scores.sort((a, b) => { + return a - b; +}); + +let count = 0; +let arr = []; + +while (arr.length < 3) { + let n = scores.pop(); + if (!arr.includes(n)) { + arr.push(n); + } + count += 1; +} + +console.log(count); diff --git "a/Challenge/SubinChoi/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" "b/Challenge/SubinChoi/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" new file mode 100644 index 0000000..3b0af06 --- /dev/null +++ "b/Challenge/SubinChoi/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" @@ -0,0 +1,18 @@ +# 문제39 : 오타 수정하기 + +혜원이는 평소 영타가 빠르고 정확한 것을 친구들에게 자랑하고 다녔습니다. 반 친구들이 혜원이의 타자 속도가 빠르다는 것을 모두 알게 되자 혜원이는 모두의 앞에서 타자 실력을 보여주게 됩니다. + +그런데 막상 보여주려니 긴장이 되서 문장의 모든 e를 q로 잘못 친 것을 발견했습니다. +혜원이는 프로그램을 돌려 재빠르게 모든 q를 e로 바꾸는 프로그램을 작성하려고 합니다. + +**문장이 입력되면 모든 q를 e로 바꾸는 프로그램을 작성해 주세요.** + +```jsx +**입출력** + +입력 : querty +출력 : euerty + +입력 : hqllo my namq is hyqwon +출력 : hello my name is hyewon +``` \ No newline at end of file diff --git "a/Challenge/SubinChoi/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" "b/Challenge/SubinChoi/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" new file mode 100644 index 0000000..348e4ef --- /dev/null +++ "b/Challenge/SubinChoi/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" @@ -0,0 +1,26 @@ +/* +# 문제39 : 오타 수정하기 + +혜원이는 평소 영타가 빠르고 정확한 것을 친구들에게 자랑하고 다녔습니다. 반 친구들이 혜원이의 타자 속도가 빠르다는 것을 모두 알게 되자 혜원이는 모두의 앞에서 타자 실력을 보여주게 됩니다. + +그런데 막상 보여주려니 긴장이 되서 문장의 모든 e를 q로 잘못 친 것을 발견했습니다. +혜원이는 프로그램을 돌려 재빠르게 모든 q를 e로 바꾸는 프로그램을 작성하려고 합니다. + +**문장이 입력되면 모든 q를 e로 바꾸는 프로그램을 작성해 주세요.** + +```jsx +**입출력** + +입력 : querty +출력 : euerty + +입력 : hqllo my namq is hyqwon +출력 : hello my name is hyewon +``` +*/ + +const input = prompt("문장을 입력해주세요"); +function changeQtoE(str, searchStr, joinStr) { + return str.split(searchStr).join(joinStr); +} +changeQtoE(input, "q", "e"); diff --git a/Challenge/YurinWang/011.for/README.md b/Challenge/YurinWang/011.for/README.md new file mode 100644 index 0000000..a67da6e --- /dev/null +++ b/Challenge/YurinWang/011.for/README.md @@ -0,0 +1,11 @@ +# 문제11 : for를 이용한 기본 활용 + +1부터 100까지 모두 더하는 Code를 부분에 완성하세요. `for`를 사용해야 합니다. + +```jsx +let s = 0; + +//pass + +console.log(s); +``` \ No newline at end of file diff --git a/Challenge/YurinWang/011.for/solve.js b/Challenge/YurinWang/011.for/solve.js new file mode 100644 index 0000000..0077996 --- /dev/null +++ b/Challenge/YurinWang/011.for/solve.js @@ -0,0 +1,18 @@ +/* +# 문제11 : for를 이용한 기본 활용 + +1부터 100까지 모두 더하는 Code를 부분에 완성하세요. `for`를 사용해야 합니다. + +let s = 0; + +//pass + +console.log(s); +*/ + +let s = 0; +for (let i = 0; i <= 100; i++) { + s += i; +} + +console.log(s); diff --git a/Challenge/YurinWang/012.class/README.md b/Challenge/YurinWang/012.class/README.md new file mode 100644 index 0000000..d3040ce --- /dev/null +++ b/Challenge/YurinWang/012.class/README.md @@ -0,0 +1,17 @@ +# 문제12 : 게임 캐릭터 클래스 만들기 + +다음 소스코드에서 클래스를 작성하여 게임 캐릭터의 능력치와 '파이어볼'이 출력되게 만드시오. +**주어진 소스 코드를 수정해선 안됩니다.** + +```jsx +**데이터** +<여기에 class를 작성하세요.> + +const x = new Wizard(545, 210, 10); +console.log(x.health, x.mana, x.armor); +x.attack(); + +**출력** +545 210 10 +파이어볼 +``` \ No newline at end of file diff --git a/Challenge/YurinWang/012.class/solve.js b/Challenge/YurinWang/012.class/solve.js new file mode 100644 index 0000000..a82c4b8 --- /dev/null +++ b/Challenge/YurinWang/012.class/solve.js @@ -0,0 +1,32 @@ +/* +# 문제12 : 게임 캐릭터 클래스 만들기 + +다음 소스코드에서 클래스를 작성하여 게임 캐릭터의 능력치와 '파이어볼'이 출력되게 만드시오. +**주어진 소스 코드를 수정해선 안됩니다.** + +**데이터** +<여기에 class를 작성하세요.> + +const x = new Wizard(545, 210, 10); +console.log(x.health, x.mana, x.armor); +x.attack(); + +**출력** +545 210 10 +파이어볼 +*/ + +const Wizard = class Wizard { + constructor(health, mana, armor) { + this.health = health; + this.mana = mana; + this.armor = armor; + } + attack() { + console.log("파이어볼"); + } +}; + +const x = new Wizard(545, 210, 10); +console.log(x.health, x.mana, x.armor); +x.attack(); diff --git a/Challenge/YurinWang/013.find-planet/README.md b/Challenge/YurinWang/013.find-planet/README.md new file mode 100644 index 0000000..8afacd3 --- /dev/null +++ b/Challenge/YurinWang/013.find-planet/README.md @@ -0,0 +1,15 @@ +# 문제13 : 몇 번째 행성인가요? + +우리 태양계를 이루고 있는 행성은 **수성, 금성, 지구, 화성, 목성, 토성, 천왕성, 해왕성**으로 총 8개 입니다. 저희는 우리 태양계의 n번째 행성이 무엇인지 알고 싶습니다. + +입력으로 행성의 순서를 나타내는 숫자 n이 입력됩니다. +출력으로 그 순서에 해당하는 행성의 이름을 출력해 주세요. + +예를들어 1이 입력되면, 첫번째 행성인 수성이 출력됩니다. + +```jsx +**입출력** + +입력 : 1 +출력 : 수성 +``` \ No newline at end of file diff --git a/Challenge/YurinWang/013.find-planet/solve.js b/Challenge/YurinWang/013.find-planet/solve.js new file mode 100644 index 0000000..b027689 --- /dev/null +++ b/Challenge/YurinWang/013.find-planet/solve.js @@ -0,0 +1,32 @@ +/* +# 문제13 : 몇 번째 행성인가요? + +우리 태양계를 이루고 있는 행성은 **수성, 금성, 지구, 화성, 목성, 토성, 천왕성, 해왕성**으로 총 8개 입니다. 저희는 우리 태양계의 n번째 행성이 무엇인지 알고 싶습니다. + +입력으로 행성의 순서를 나타내는 숫자 n이 입력됩니다. +출력으로 그 순서에 해당하는 행성의 이름을 출력해 주세요. + +예를들어 1이 입력되면, 첫번째 행성인 수성이 출력됩니다. + +**입출력** + +입력 : 1 +출력 : 수성 +*/ + +const planet = [ + "수성", + "금성", + "지구", + "화성", + "목성", + "토성", + "천왕성", + "해왕성", +]; + +function result(n) { + console.log(planet[n - 1]); +} + +result(1); diff --git a/Challenge/YurinWang/014.if/README.md b/Challenge/YurinWang/014.if/README.md new file mode 100644 index 0000000..488df61 --- /dev/null +++ b/Challenge/YurinWang/014.if/README.md @@ -0,0 +1,17 @@ +# 문제14 : 3의 배수 인가요? + +영희는 친구와 게임을 하고 있습니다. 서로 돌아가며 랜덤으로 숫자를 하나 말하고 그게 3의 배수이면 박수를 치고 아니면 그 숫자를 그대로 말하는 게임입니다. + +입력으로 랜덤한 숫자 n이 주어집니다. + +만약 그 수가 **3의 배수라면 '짝'이라는 글자를, 3의 배수가 아니라면 n을 그대로 출력**해 주세요. + +```jsx +**입출력** + +입력 : 3 +출력 : 짝 + +입력 : 2 +출력 : 2 +``` \ No newline at end of file diff --git a/Challenge/YurinWang/014.if/solve.js b/Challenge/YurinWang/014.if/solve.js new file mode 100644 index 0000000..4ba866c --- /dev/null +++ b/Challenge/YurinWang/014.if/solve.js @@ -0,0 +1,25 @@ +/* +# 문제14 : 3의 배수 인가요? + +영희는 친구와 게임을 하고 있습니다. 서로 돌아가며 랜덤으로 숫자를 하나 말하고 그게 3의 배수이면 박수를 치고 아니면 그 숫자를 그대로 말하는 게임입니다. + +입력으로 랜덤한 숫자 n이 주어집니다. + +만약 그 수가 **3의 배수라면 '짝'이라는 글자를, 3의 배수가 아니라면 n을 그대로 출력**해 주세요. + +**입출력** + +입력 : 3 +출력 : 짝 + +입력 : 2 +출력 : 2 +*/ + +const num = Number(prompt("숫자를 입력해주세요")); + +if (num % 3 === 0) { + alert("짝"); +} else { + alert(num); +} diff --git a/Challenge/YurinWang/015.template _literals/README.md b/Challenge/YurinWang/015.template _literals/README.md new file mode 100644 index 0000000..2056ef3 --- /dev/null +++ b/Challenge/YurinWang/015.template _literals/README.md @@ -0,0 +1,13 @@ +# 문제15 : 자기소개 + +신학기가 시작되고, 아이들이 돌아가면서 자기소개를 하기로 했습니다. + +만약 입력으로 `김다정`이라는 이름이 주어지면 "안녕하세요. 저는 김다정입니다."라고 출력하게 +해주세요. + +```jsx +**입출력** + +입력 : 김다정 +출력 : 안녕하세요. 저는 김다정입니다. +``` \ No newline at end of file diff --git a/Challenge/YurinWang/015.template _literals/solve.js b/Challenge/YurinWang/015.template _literals/solve.js new file mode 100644 index 0000000..61fb19f --- /dev/null +++ b/Challenge/YurinWang/015.template _literals/solve.js @@ -0,0 +1,17 @@ +/* +# 문제15 : 자기소개 + +신학기가 시작되고, 아이들이 돌아가면서 자기소개를 하기로 했습니다. + +만약 입력으로 `김다정`이라는 이름이 주어지면 "안녕하세요. 저는 김다정입니다."라고 출력하게 +해주세요. + +**입출력** + +입력 : 김다정 +출력 : 안녕하세요. 저는 김다정입니다. +*/ + +const name = prompt("이름을 입력해주세요."); + +alert(`안녕하세요. 저는 ${name}입니다.`); diff --git "a/Challenge/YurinWang/016.\353\241\234\352\276\270\352\272\274/README.md" "b/Challenge/YurinWang/016.\353\241\234\352\276\270\352\272\274/README.md" new file mode 100644 index 0000000..6528a39 --- /dev/null +++ "b/Challenge/YurinWang/016.\353\241\234\352\276\270\352\272\274/README.md" @@ -0,0 +1,10 @@ +# 문제16 : 로꾸거 + +문장이 입력되면 거꾸로 출력하는 프로그램을 만들어 봅시다. + +```jsx +**입출력** + +입력 : 거꾸로 +출력 : 로꾸거 +``` diff --git "a/Challenge/YurinWang/016.\353\241\234\352\276\270\352\272\274/solve.js" "b/Challenge/YurinWang/016.\353\241\234\352\276\270\352\272\274/solve.js" new file mode 100644 index 0000000..73b1d1f --- /dev/null +++ "b/Challenge/YurinWang/016.\353\241\234\352\276\270\352\272\274/solve.js" @@ -0,0 +1,14 @@ +/* +# 문제16 : 로꾸거 + +문장이 입력되면 거꾸로 출력하는 프로그램을 만들어 봅시다. + +입력 : 거꾸로 +출력 : 로꾸거 + +*/ + +const input = prompt("여기에 입력해주세요."); +const arr = input.split(""); +arr.reverse(); +arr.join(""); diff --git a/Challenge/YurinWang/017.limit/README.md b/Challenge/YurinWang/017.limit/README.md new file mode 100644 index 0000000..b364fc6 --- /dev/null +++ b/Challenge/YurinWang/017.limit/README.md @@ -0,0 +1,7 @@ +# 문제17 : 놀이기구 키 제한 + +유주는 놀이공원 아르바이트 중입니다. 그런데 놀이기구마다 키 제한이 있습니다. +유주가 담당하는 놀이기구는 키가 150cm 이상만 탈 수 있습니다. + +입력으로 키가 주어지면 +키가 150이 넘으면 YES를 틀리면 NO를 출력하는 프로그램을 작성하세요. diff --git a/Challenge/YurinWang/017.limit/solve.js b/Challenge/YurinWang/017.limit/solve.js new file mode 100644 index 0000000..fb647a7 --- /dev/null +++ b/Challenge/YurinWang/017.limit/solve.js @@ -0,0 +1,16 @@ +/* +# 문제17 : 놀이기구 키 제한 + +유주는 놀이공원 아르바이트 중입니다. 그런데 놀이기구마다 키 제한이 있습니다. +유주가 담당하는 놀이기구는 키가 150cm 이상만 탈 수 있습니다. + +입력으로 키가 주어지면 +키가 150이 넘으면 YES를 틀리면 NO를 출력하는 프로그램을 작성하세요. +*/ + +const height = Number(prompt("키를 입력해주세요.")); +if (height < 150) { + alert("NO"); +} else { + alert("YES"); +} diff --git a/Challenge/YurinWang/018.average/README.md b/Challenge/YurinWang/018.average/README.md new file mode 100644 index 0000000..ca04b62 --- /dev/null +++ b/Challenge/YurinWang/018.average/README.md @@ -0,0 +1,13 @@ +# 문제18 : 평균 점수 + +영하네 반은 국어, 수학, 영어 시험을 보았습니다. 영하는 친구들의 평균 점수를 구해주기로 했습니다. + +공백으로 구분하여 세 과목의 점수가 주어지면 전체 평균 점수를 구하는 프로그램을 작성하세요. +단, 소숫점 자리는 모두 버립니다. + +```jsx +**입출력** + +입력 : 20 30 40 +출력 : 30 +``` diff --git a/Challenge/YurinWang/018.average/solve.js b/Challenge/YurinWang/018.average/solve.js new file mode 100644 index 0000000..fafff89 --- /dev/null +++ b/Challenge/YurinWang/018.average/solve.js @@ -0,0 +1,22 @@ +/* +# 문제18 : 평균 점수 + +영하네 반은 국어, 수학, 영어 시험을 보았습니다. 영하는 친구들의 평균 점수를 구해주기로 했습니다. + +공백으로 구분하여 세 과목의 점수가 주어지면 전체 평균 점수를 구하는 프로그램을 작성하세요. +단, 소숫점 자리는 모두 버립니다. + +**입출력** + +입력 : 20 30 40 +출력 : 30 + +*/ + +const score = prompt("과목들의 시험 점수를 입력해주세요.").split(" "); +let sum = 0; +for (let i = 0; i < score.length; i++) { + sum += parseInt(score[i]); +} +const result = Math.floor(sum / score.length); +console.log(result); diff --git a/Challenge/YurinWang/019.square/README.md b/Challenge/YurinWang/019.square/README.md new file mode 100644 index 0000000..e02a30a --- /dev/null +++ b/Challenge/YurinWang/019.square/README.md @@ -0,0 +1,3 @@ +문제19 : 제곱을 구하자 + +공백으로 구분하여 두 숫자 a와 b가 주어지면, a의 b승을 구하는 프로그램을 작성하세요. \ No newline at end of file diff --git a/Challenge/YurinWang/019.square/solve.js b/Challenge/YurinWang/019.square/solve.js new file mode 100644 index 0000000..4d0f092 --- /dev/null +++ b/Challenge/YurinWang/019.square/solve.js @@ -0,0 +1,6 @@ +// 문제19 : 제곱을 구하자 + +// 공백으로 구분하여 두 숫자 a와 b가 주어지면, a의 b승을 구하는 프로그램을 작성하세요. + +const num = prompt("숫자를 입력해주세요.").split(" "); +alert(`${num[0]}의 ${num[1]}승은 ${Math.pow(num[0], num[1])}입니다.`); diff --git a/Challenge/YurinWang/020.share-remainder/README.md b/Challenge/YurinWang/020.share-remainder/README.md new file mode 100644 index 0000000..91c7d9c --- /dev/null +++ b/Challenge/YurinWang/020.share-remainder/README.md @@ -0,0 +1,11 @@ +# 문제20 : 몫과 나머지 + +공백으로 구분하여 두 숫자가 주어집니다. +두번째 숫자로 첫번째 숫자를 나누었을 때 **그 몫과 나머지를 공백으로 구분하여 출력하세요.** + +```jsx +**입출력** + +입력 : 10 2 +출력 : 5 0 +``` \ No newline at end of file diff --git a/Challenge/YurinWang/020.share-remainder/solve.js b/Challenge/YurinWang/020.share-remainder/solve.js new file mode 100644 index 0000000..8119bd6 --- /dev/null +++ b/Challenge/YurinWang/020.share-remainder/solve.js @@ -0,0 +1,17 @@ +/* +# 문제20 : 몫과 나머지 + +공백으로 구분하여 두 숫자가 주어집니다. +두번째 숫자로 첫번째 숫자를 나누었을 때 **그 몫과 나머지를 공백으로 구분하여 출력하세요.** + +**입출력** + +입력 : 10 2 +출력 : 5 0 +*/ + +const num = prompt("숫자를 입력해주세요.").split(" "); +const quot = Math.floor(num[0] / num[1]); +const remainder = Math.floor(num[0] % num[1]); + +console.log(quot, remainder); diff --git a/Challenge/YurinWang/021.set/README.md b/Challenge/YurinWang/021.set/README.md new file mode 100644 index 0000000..255a239 --- /dev/null +++ b/Challenge/YurinWang/021.set/README.md @@ -0,0 +1,9 @@ +# 문제21 : set은 어떻게 만드나요? + +다음 중 set을 만드는 방법으로 올바른 것을 모두 고르시오. + +1) var x = {1, 2, 3, 5, 6, 7}; +2) var x = {}; +3) var x = new Set('javascript'); +4) var x = new Set(range(5)); +5) var x = new Set(); \ No newline at end of file diff --git a/Challenge/YurinWang/021.set/solve.js b/Challenge/YurinWang/021.set/solve.js new file mode 100644 index 0000000..a376356 --- /dev/null +++ b/Challenge/YurinWang/021.set/solve.js @@ -0,0 +1,13 @@ +/* +# 문제21 : set은 어떻게 만드나요? + +다음 중 set을 만드는 방법으로 올바른 것을 모두 고르시오. + +1) var x = {1, 2, 3, 5, 6, 7}; +2) var x = {}; +3) var x = new Set('javascript'); +4) var x = new Set(range(5)); +5) var x = new Set(); +*/ + +정답 : 3번, 5번 \ No newline at end of file diff --git a/Challenge/YurinWang/022.multiple/README.md b/Challenge/YurinWang/022.multiple/README.md new file mode 100644 index 0000000..b4d74cc --- /dev/null +++ b/Challenge/YurinWang/022.multiple/README.md @@ -0,0 +1,9 @@ +# 문제22 : 배수인지 확인하기 + +다음 중 변수 i가 6의 배수인지 확인하는 방법으로 올바른 것은? + +1) i / 6 == 0 +2) i % 6 == 0 +3) i & 6 == 0 +4) i | 6 == 0 +5) i // 6 == 0 \ No newline at end of file diff --git a/Challenge/YurinWang/022.multiple/solve.js b/Challenge/YurinWang/022.multiple/solve.js new file mode 100644 index 0000000..6c79063 --- /dev/null +++ b/Challenge/YurinWang/022.multiple/solve.js @@ -0,0 +1,13 @@ +/* +# 문제22 : 배수인지 확인하기 + +다음 중 변수 i가 6의 배수인지 확인하는 방법으로 올바른 것은? + +1) i / 6 == 0 +2) i % 6 == 0 +3) i & 6 == 0 +4) i | 6 == 0 +5) i // 6 == 0 +*/ + +정답 : 2번 \ No newline at end of file diff --git a/Challenge/YurinWang/023.OX/README.md b/Challenge/YurinWang/023.OX/README.md new file mode 100644 index 0000000..47e0046 --- /dev/null +++ b/Challenge/YurinWang/023.OX/README.md @@ -0,0 +1,3 @@ +# 문제23 : OX문제 + +`console.log(10/3)`의 출력 결과는 **3**이다. \ No newline at end of file diff --git a/Challenge/YurinWang/023.OX/solve.js b/Challenge/YurinWang/023.OX/solve.js new file mode 100644 index 0000000..1f65d95 --- /dev/null +++ b/Challenge/YurinWang/023.OX/solve.js @@ -0,0 +1,6 @@ +// # 문제23: OX문제 + +// `console.log(10/3)`의 출력 결과는 ** 3 ** 이다. + +정답 : X +3.3333333333333335가 출력이 된다. \ No newline at end of file diff --git a/Challenge/YurinWang/024.toUpperCase/README.md b/Challenge/YurinWang/024.toUpperCase/README.md new file mode 100644 index 0000000..a5e5142 --- /dev/null +++ b/Challenge/YurinWang/024.toUpperCase/README.md @@ -0,0 +1,12 @@ +# 문제24 : 대문자로 바꿔주세요! + +민지는 국제 포럼에서 아르바이트를 하게 되었습니다. 민지는 각 국에서 온 참가자들의 명단을 엑셀로 정리하고 있는데 참가자들 이름이 어떤 이는 전부 소문자, 어떤 이는 전부 대문자로 써져 있는 등 형식이 제각각이었습니다. + +민지를 위해 **이름이 입력되면 전부 대문자로 출력되는 프로그램**을 만들어주세요. + +```jsx +**입출력** + +입력 : mary +출력 : MARY +``` \ No newline at end of file diff --git a/Challenge/YurinWang/024.toUpperCase/solve.js b/Challenge/YurinWang/024.toUpperCase/solve.js new file mode 100644 index 0000000..26958ae --- /dev/null +++ b/Challenge/YurinWang/024.toUpperCase/solve.js @@ -0,0 +1,15 @@ +/* +# 문제24 : 대문자로 바꿔주세요! + +민지는 국제 포럼에서 아르바이트를 하게 되었습니다. 민지는 각 국에서 온 참가자들의 명단을 엑셀로 정리하고 있는데 참가자들 이름이 어떤 이는 전부 소문자, 어떤 이는 전부 대문자로 써져 있는 등 형식이 제각각이었습니다. + +민지를 위해 **이름이 입력되면 전부 대문자로 출력되는 프로그램**을 만들어주세요. + +**입출력** + +입력 : mary +출력 : MARY +*/ + +const name = prompt("영문 이름을 입력해주세요.").toUpperCase(); +console.log(name); diff --git a/Challenge/YurinWang/025.circle-area/README.md b/Challenge/YurinWang/025.circle-area/README.md new file mode 100644 index 0000000..7e79bae --- /dev/null +++ b/Challenge/YurinWang/025.circle-area/README.md @@ -0,0 +1,8 @@ +# 문제 25: 원의 넓이를 구하세요 + +원의 넓이는 `반지름의 길이 x 반지름의 길이 x 3.14`로 구할 수 있습니다. +함수를 사용하여 원의 넓이를 구하는 코드를 작성해봅시다. + +**입력으로 반지름의 길이 정수 n이 주어지면 원의 넓이를 반환하는 함수**를 만들어 주세요. + + diff --git a/Challenge/YurinWang/025.circle-area/solve.js b/Challenge/YurinWang/025.circle-area/solve.js new file mode 100644 index 0000000..9a03dbc --- /dev/null +++ b/Challenge/YurinWang/025.circle-area/solve.js @@ -0,0 +1,13 @@ +// # 문제 25: 원의 넓이를 구하세요 + +// 원의 넓이는 `반지름의 길이 x 반지름의 길이 x 3.14`로 구할 수 있습니다. +// 함수를 사용하여 원의 넓이를 구하는 코드를 작성해봅시다. + +// **입력으로 반지름의 길이 정수 n이 주어지면 원의 넓이를 반환하는 함수**를 만들어 주세요. + +const radius = Number(prompt("반지름을 입력하세요.")); + +function circleWidth(n) { + return n * n * 3.14; +} +circleWidth(radius); diff --git a/Challenge/YurinWang/026.planet_2/README.md b/Challenge/YurinWang/026.planet_2/README.md new file mode 100644 index 0000000..678e82a --- /dev/null +++ b/Challenge/YurinWang/026.planet_2/README.md @@ -0,0 +1,6 @@ +# 문제26 : 행성 문제2 + +우리 태양계를 이루는 행성은 수성, 금성, 지구, 화성, 목성, 토성, 천왕성, 해왕성이 있습니다. +이 행성들의 영어 이름은 Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune입니다. + +행성의 한글 이름을 입력하면 영어 이름을 반환하는 프로그램을 만들어 주세요. \ No newline at end of file diff --git a/Challenge/YurinWang/026.planet_2/solve.js b/Challenge/YurinWang/026.planet_2/solve.js new file mode 100644 index 0000000..0af33db --- /dev/null +++ b/Challenge/YurinWang/026.planet_2/solve.js @@ -0,0 +1,20 @@ +// 문제26 : 행성 문제2 + +// 우리 태양계를 이루는 행성은 수성, 금성, 지구, 화성, 목성, 토성, 천왕성, 해왕성이 있습니다. +// 이 행성들의 영어 이름은 Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune입니다. + +// 행성의 한글 이름을 입력하면 영어 이름을 반환하는 프로그램을 만들어 주세요. + +const planets = { + 수성: "Mercury", + 금성: "Venus", + 지구: "Earth", + 화성: "Mars", + 목성: "Jupiter", + 토성: "Saturn", + 천왕성: "Uranus", + 해왕성: "Neptune", +}; + +const name = prompt("행성 이름을 입력해주세요."); +console.log(planets[name]); diff --git a/Challenge/YurinWang/027.object/README.md b/Challenge/YurinWang/027.object/README.md new file mode 100644 index 0000000..9b83945 --- /dev/null +++ b/Challenge/YurinWang/027.object/README.md @@ -0,0 +1,14 @@ +# 문제27 : 객체 만들기 + +첫번째 입력에서는 학생의 이름이 공백으로 구분되어 입력되고, 두번째에는 그 학생의 수학 점수가 공백으로 구분되어 주어집니다. + +두 개를 합쳐 **학생의 이름이 key**이고 **value가 수학 점수**인 객체를 출력해주세요. + +```jsx +**입력** +Yujin Hyewon +70 100 + +**출력** +{'Yujin': 70, 'Hyewon': 100} +``` \ No newline at end of file diff --git a/Challenge/YurinWang/027.object/solve.js b/Challenge/YurinWang/027.object/solve.js new file mode 100644 index 0000000..131a1e6 --- /dev/null +++ b/Challenge/YurinWang/027.object/solve.js @@ -0,0 +1,22 @@ +// # 문제27 : 객체 만들기 + +// 첫번째 입력에서는 학생의 이름이 공백으로 구분되어 입력되고, 두번째에는 그 학생의 수학 점수가 공백으로 구분되어 주어집니다. + +// 두 개를 합쳐 **학생의 이름이 key**이고 **value가 수학 점수**인 객체를 출력해주세요. + +// **입력** +// Yujin Hyewon +// 70 100 + +// **출력** +// {'Yujin': 70, 'Hyewon': 100} + +const name = prompt("이름을 입력해주세요.").split(" "); +const score = prompt("점수를 입력해주세요.").split(" "); +const obj = {}; + +for (let i = 0; i < name.length; i++) { + obj[name[i]] = Number(score[i]); +} + +console.log(obj); diff --git a/Challenge/YurinWang/028.2-gram/README.md b/Challenge/YurinWang/028.2-gram/README.md new file mode 100644 index 0000000..3a0dfe1 --- /dev/null +++ b/Challenge/YurinWang/028.2-gram/README.md @@ -0,0 +1,23 @@ +# 문제28 : 2-gram + +**2-gram**이란 문자열에서 2개의 연속된 요소를 출력하는 방법입니다. + +예를 들어 'Javascript'를 2-gram으로 반복해 본다면 다음과 같은 결과가 나옵니다. + +```jsx +**입력** +Javascript + +**출력** +J a +a v +v a +a s +s c +c r +r i +i p +p t +``` + +입력으로 문자열이 주어지면 **2-gram**으로 출력하는 프로그램을 작성해 주세요. \ No newline at end of file diff --git a/Challenge/YurinWang/028.2-gram/solve.js b/Challenge/YurinWang/028.2-gram/solve.js new file mode 100644 index 0000000..01ce6af --- /dev/null +++ b/Challenge/YurinWang/028.2-gram/solve.js @@ -0,0 +1,38 @@ +// # 문제28 : 2-gram + +// **2-gram**이란 문자열에서 2개의 연속된 요소를 출력하는 방법입니다. + +// 예를 들어 'Javascript'를 2-gram으로 반복해 본다면 다음과 같은 결과가 나옵니다. + +// **입력** +// Javascript + +// **출력** +// J a +// a v +// v a +// a s +// s c +// c r +// r i +// i p +// p t + +// 입력으로 문자열이 주어지면 **2-gram**으로 출력하는 프로그램을 작성해 주세요. +// let str = ""; +// const arr = prompt("문자를 입력해주세요.").split(""); +// for (let i = 0; i < arr.length - 1; i++) { +// for (j = i; j < i + 1; j++) { +// str += `${arr[i]} ${arr[i + 1]}`; +// } +// str += "\n"; +// } +// console.log(str); + +let str = ""; +const arr = prompt("문자를 입력해주세요.").split(""); +for (let i = 0; i < arr.length - 1; i++) { + str += `${arr[i]} ${arr[i + 1]}`; + str += "\n"; +} +console.log(str); diff --git "a/Challenge/YurinWang/029.\353\214\200\353\254\270\354\236\220/README.md" "b/Challenge/YurinWang/029.\353\214\200\353\254\270\354\236\220/README.md" new file mode 100644 index 0000000..287a235 --- /dev/null +++ "b/Challenge/YurinWang/029.\353\214\200\353\254\270\354\236\220/README.md" @@ -0,0 +1,5 @@ +# 문제29 : 대문자만 지나가세요 + +진구는 영어 학원 아르바이트를 하고 있습니다. 반 아이들은 알파벳을 공부하는 학생들인데 오늘은 대문자 쓰기 시험을 봤습니다. + +알파벳 하나만을 입력하고 그 알파벳이 대문자이면 YES를 아니면 NO를 출력하는 프로그램을 만들어 주세요. \ No newline at end of file diff --git "a/Challenge/YurinWang/029.\353\214\200\353\254\270\354\236\220/solve.js" "b/Challenge/YurinWang/029.\353\214\200\353\254\270\354\236\220/solve.js" new file mode 100644 index 0000000..a92740c --- /dev/null +++ "b/Challenge/YurinWang/029.\353\214\200\353\254\270\354\236\220/solve.js" @@ -0,0 +1,10 @@ +// 문제29 : 대문자만 지나가세요 + +// 진구는 영어 학원 아르바이트를 하고 있습니다. 반 아이들은 알파벳을 공부하는 학생들인데 오늘은 대문자 쓰기 시험을 봤습니다. + +// 알파벳 하나만을 입력하고 그 알파벳이 대문자이면 YES를 아니면 NO를 출력하는 프로그램을 만들어 주세요. + +const alphabet = prompt("알파벳 하나를 입력해주세요."); +alphabet === alphabet.toUpperCase() + ? console.log("YES😄") + : console.log("NO🥲"); diff --git a/Challenge/YurinWang/030.find-string/README.md b/Challenge/YurinWang/030.find-string/README.md new file mode 100644 index 0000000..b2f4ed6 --- /dev/null +++ b/Challenge/YurinWang/030.find-string/README.md @@ -0,0 +1,15 @@ +# 문제30 : 문자열 속 문자 찾기 + +문자 pineapple에는 apple이라는 문자가 숨어 있습니다. 원범이는 이렇듯 문자열 속에 숨어있는 문자를 찾아보려고 합니다. + +첫번째 입력에서는 문자열이 입력되고, 두번째에는 찾을 문자가 입력되어야 합니다. +**그 문자가 시작하는 index를 반환하는 프로그램**을 만들어 주세요 + +```jsx +**입력** +pineapple is yummy +apple + +**출력** +4 +``` \ No newline at end of file diff --git a/Challenge/YurinWang/030.find-string/solve.js b/Challenge/YurinWang/030.find-string/solve.js new file mode 100644 index 0000000..7dad81a --- /dev/null +++ b/Challenge/YurinWang/030.find-string/solve.js @@ -0,0 +1,19 @@ +// # 문제30 : 문자열 속 문자 찾기 + +// 문자 pineapple에는 apple이라는 문자가 숨어 있습니다. 원범이는 이렇듯 문자열 속에 숨어있는 문자를 찾아보려고 합니다. + +// 첫번째 입력에서는 문자열이 입력되고, 두번째에는 찾을 문자가 입력되어야 합니다. +// **그 문자가 시작하는 index를 반환하는 프로그램**을 만들어 주세요 + +// ```jsx +// **입력** +// pineapple is yummy +// apple + +// **출력** +// 4 +// ``` + +const str = prompt("여기에 입력해주세요."); +const findStr = prompt("찾을 문자를 입력해주세요."); +console.log(str.indexOf(findStr)); diff --git a/Challenge/YurinWang/031.timeComplexity/README.md b/Challenge/YurinWang/031.timeComplexity/README.md new file mode 100644 index 0000000..c10ae55 --- /dev/null +++ b/Challenge/YurinWang/031.timeComplexity/README.md @@ -0,0 +1,9 @@ +# 문제31 : 자바스크립트 자료형의 복잡도 + +다음 배열 내장함수의 시간 복잡도가 O(1)이 아닌 것을 모두 고르시오. + +1) arr[i] +2) arr.push(5) +3) arr.slice() +4) arr.pop() +5) arr.includes(5) \ No newline at end of file diff --git a/Challenge/YurinWang/031.timeComplexity/solve.js b/Challenge/YurinWang/031.timeComplexity/solve.js new file mode 100644 index 0000000..339f80f --- /dev/null +++ b/Challenge/YurinWang/031.timeComplexity/solve.js @@ -0,0 +1,13 @@ +/* +# 문제31 : 자바스크립트 자료형의 복잡도 + +다음 배열 내장함수의 시간 복잡도가 O(1)이 아닌 것을 모두 고르시오. + +1) arr[i] +2) arr.push(5) +3) arr.slice() +4) arr.pop() +5) arr.includes(5) +*/ + +// 정답 3, 5번 diff --git "a/Challenge/YurinWang/032.\353\254\270\354\236\220\354\227\264\353\247\214\353\223\244\352\270\260/README.md" "b/Challenge/YurinWang/032.\353\254\270\354\236\220\354\227\264\353\247\214\353\223\244\352\270\260/README.md" new file mode 100644 index 0000000..53459f4 --- /dev/null +++ "b/Challenge/YurinWang/032.\353\254\270\354\236\220\354\227\264\353\247\214\353\223\244\352\270\260/README.md" @@ -0,0 +1,13 @@ +# 문제32 : 문자열 만들기 + +취업 준비생인 혜림이는 자기소개서를 쓰고 있습니다. 열심히 자기소개서를 작성하던 도중 혜림이는 자기가 지금까지 단어를 얼마나 적었는지 궁금하게 됩니다. + +혜림이를 위해 **문자열을 입력받으면 단어의 갯수를 출력하는 프로그램**을 작성해 주세요. + +```jsx +**입력** +안녕하세요. 저는 제주대학교 컴퓨터공학전공 혜림입니다. + +**출력** +5 +``` diff --git "a/Challenge/YurinWang/032.\353\254\270\354\236\220\354\227\264\353\247\214\353\223\244\352\270\260/solve.js" "b/Challenge/YurinWang/032.\353\254\270\354\236\220\354\227\264\353\247\214\353\223\244\352\270\260/solve.js" new file mode 100644 index 0000000..14a0dc2 --- /dev/null +++ "b/Challenge/YurinWang/032.\353\254\270\354\236\220\354\227\264\353\247\214\353\223\244\352\270\260/solve.js" @@ -0,0 +1,17 @@ +// # 문제32 : 문자열 만들기 + +// 취업 준비생인 혜림이는 자기소개서를 쓰고 있습니다. 열심히 자기소개서를 작성하던 도중 혜림이는 자기가 지금까지 단어를 얼마나 적었는지 궁금하게 됩니다. + +// 혜림이를 위해 문자열을 입력받으면 단어의 갯수를 출력하는 프로그램을 작성해 주세요. + +// ```jsx +// **입력** +// 안녕하세요. 저는 제주대학교 컴퓨터공학전공 혜림입니다. + +// **출력** +// 5 +// ``` + +const str = prompt("입력해주세요.").split(" "); +const wordNum = str.length; +console.log(wordNum); diff --git a/Challenge/YurinWang/033.Reverse/README.md b/Challenge/YurinWang/033.Reverse/README.md new file mode 100644 index 0000000..7d450ce --- /dev/null +++ b/Challenge/YurinWang/033.Reverse/README.md @@ -0,0 +1,13 @@ +# 문제33 : 거꾸로 출력하기 + +한 줄에 여러개의 숫자가 입력되면, 역순으로 그 숫자들을 하나씩 출력하는 프로그램을 작성하시오. + +```jsx +**입출력** +입력 : 1 2 3 4 5 +출력 : 5 4 3 2 1 + +**출력** +입력 : 2 4 6 7 8 +출력 : 8 7 6 4 2 +``` diff --git a/Challenge/YurinWang/033.Reverse/solve.js b/Challenge/YurinWang/033.Reverse/solve.js new file mode 100644 index 0000000..4029ebb --- /dev/null +++ b/Challenge/YurinWang/033.Reverse/solve.js @@ -0,0 +1,25 @@ +// # 문제33 : 거꾸로 출력하기 + +// 한 줄에 여러개의 숫자가 입력되면, 역순으로 그 숫자들을 하나씩 출력하는 프로그램을 작성하시오. + +// ```jsx +// **입출력** +// 입력 : 1 2 3 4 5 +// 출력 : 5 4 3 2 1 + +// **출력** +// 입력 : 2 4 6 7 8 +// 출력 : 8 7 6 4 2 +// ``` + +// 풀이 1 +const num = prompt("숫자를 입력해주세요").split(" ").reverse().join(" "); +console.log(num); + +// 풀이 2 +const nums = prompt().split(" ").reverse(); +let numsVal = ""; +for (i = 0; i < nums.length; i++) { + numsVal += `${nums[i]} `; +} +console.log(numsVal); diff --git a/Challenge/YurinWang/034.Sort/README.md b/Challenge/YurinWang/034.Sort/README.md new file mode 100644 index 0000000..2d7e610 --- /dev/null +++ b/Challenge/YurinWang/034.Sort/README.md @@ -0,0 +1,15 @@ +# 문제34 : sort 구현하기 + +민주는 체육부장으로 체육시간이 되면 반 친구들이 제대로 키 순서대로 모였는지를 확인해야 한다. 그런데 요즘 민주는 그것이 너무 번거롭게 느껴져 한 번에 확인하고 싶어한다. + +민주를 위해 키가 주어지면 순서대로 제대로 섰는지 확인하는 프로그램을 작성해보자. +(키는 공백으로 구분하여 입력됩니다.) + +```jsx +**입출력** +입력 : 176 156 155 165 166 169 +출력 : NO + +입력 : 155 156 165 166 169 176 +출력 : YES +``` diff --git a/Challenge/YurinWang/034.Sort/solve.js b/Challenge/YurinWang/034.Sort/solve.js new file mode 100644 index 0000000..02ef56b --- /dev/null +++ b/Challenge/YurinWang/034.Sort/solve.js @@ -0,0 +1,29 @@ +// # 문제34 : sort 구현하기 + +// 민주는 체육부장으로 체육시간이 되면 반 친구들이 제대로 키 순서대로 모였는지를 확인해야 한다. 그런데 요즘 민주는 그것이 너무 번거롭게 느껴져 한 번에 확인하고 싶어한다. + +// 민주를 위해 키가 주어지면 순서대로 제대로 섰는지 확인하는 프로그램을 작성해보자. +// (키는 공백으로 구분하여 입력됩니다.) + +// ```jsx +// **입출력** +// 입력 : 176 156 155 165 166 169 +// 출력 : NO + +// 입력 : 155 156 165 166 169 176 +// 출력 : YES +// ``` + +const unOrder = prompt("키를 입력해주세요."); +let order = ""; + +order = unOrder + .split(" ") + .sort((a, b) => a - b) + .join(" "); + +if (unOrder === order) { + console.log("YES!!"); +} else { + console.log("NO!"); +} diff --git a/Challenge/YurinWang/035.function/README.md b/Challenge/YurinWang/035.function/README.md new file mode 100644 index 0000000..5e4b62a --- /dev/null +++ b/Challenge/YurinWang/035.function/README.md @@ -0,0 +1,22 @@ +# 문제35 : Factory 함수 사용하기 + +2제곱, 3제곱, 4제곱을 할 수 있는 Factory 함수를 만들려고 합니다. + +에 코드를 작성하여 two함수를 완성하세요. + +```jsx +function one(n){ + function two(){ + //pass + } + return two; +} + +const a = one(2); +const b = one(3); +const c = one(4); + +console.log(a(10)); +console.log(b(10)); +console.log(c(10)); +``` \ No newline at end of file diff --git a/Challenge/YurinWang/035.function/solve.js b/Challenge/YurinWang/035.function/solve.js new file mode 100644 index 0000000..9c04763 --- /dev/null +++ b/Challenge/YurinWang/035.function/solve.js @@ -0,0 +1,31 @@ +/* +# 문제35 : Factory 함수 사용하기 + +2제곱, 3제곱, 4제곱을 할 수 있는 Factory 함수를 만들려고 합니다. + +에 코드를 작성하여 two함수를 완성하세요. + +```jsx +function one(n){ + function two(){ + //pass + } + return two; +} + +const a = one(2); +const b = one(3); +const c = one(4); + +console.log(a(10)); +console.log(b(10)); +console.log(c(10)); +``` +*/ + +function one(n) { + function two(val) { + return Math.pow(val, n); + } + return two; +} diff --git a/Challenge/YurinWang/036.Multiplication_Table/README.md b/Challenge/YurinWang/036.Multiplication_Table/README.md new file mode 100644 index 0000000..3691735 --- /dev/null +++ b/Challenge/YurinWang/036.Multiplication_Table/README.md @@ -0,0 +1,10 @@ +# 문제36 : 구구단 출력하기 + +1~9까지의 숫자 중 하나를 입력하면 그 단의 구구단 결과를 한 줄에 출력하는 프로그램을 작성하세요. + +```jsx +**입출력** + +입력 : 2 +출력 : 2 4 6 8 10 12 14 16 18 +``` \ No newline at end of file diff --git a/Challenge/YurinWang/036.Multiplication_Table/solve.js b/Challenge/YurinWang/036.Multiplication_Table/solve.js new file mode 100644 index 0000000..bb69b0a --- /dev/null +++ b/Challenge/YurinWang/036.Multiplication_Table/solve.js @@ -0,0 +1,19 @@ +/* +# 문제36 : 구구단 출력하기 + +1~9까지의 숫자 중 하나를 입력하면 그 단의 구구단 결과를 한 줄에 출력하는 프로그램을 작성하세요. + +```jsx +**입출력** + +입력 : 2 +출력 : 2 4 6 8 10 12 14 16 18 +``` +*/ + +const num = prompt(""); +let result = ""; +for (let i = 1; i < 10; i++) { + result += num * i + " "; +} +console.log(result); diff --git "a/Challenge/YurinWang/037.\353\260\230\354\236\245_\354\204\240\352\261\260/README.md" "b/Challenge/YurinWang/037.\353\260\230\354\236\245_\354\204\240\352\261\260/README.md" new file mode 100644 index 0000000..18cac02 --- /dev/null +++ "b/Challenge/YurinWang/037.\353\260\230\354\236\245_\354\204\240\352\261\260/README.md" @@ -0,0 +1,11 @@ +# 문제37 : 반장 선거 + +새 학기를 맞아 호준이네 반은 반장 선거를 하기로 했습니다. 그런데 표를 하나씩 개표하는 과정이 너무 번거롭게 느껴진 당신은 **학생들이 뽑은 후보들을 입력받으면 뽑힌 학생의 이름과 받은 표 수를 출력하는 프로그램**을 작성하기로 하였습니다. + +```jsx +**입력** +원범 원범 혜원 혜원 혜원 혜원 유진 유진 + +**출력** +혜원(이)가 총 4표로 반장이 되었습니다. +``` \ No newline at end of file diff --git "a/Challenge/YurinWang/037.\353\260\230\354\236\245_\354\204\240\352\261\260/solve.js" "b/Challenge/YurinWang/037.\353\260\230\354\236\245_\354\204\240\352\261\260/solve.js" new file mode 100644 index 0000000..bfdaa2e --- /dev/null +++ "b/Challenge/YurinWang/037.\353\260\230\354\236\245_\354\204\240\352\261\260/solve.js" @@ -0,0 +1,32 @@ +/* +# 문제37 : 반장 선거 + +새 학기를 맞아 호준이네 반은 반장 선거를 하기로 했습니다. 그런데 표를 하나씩 개표하는 과정이 너무 번거롭게 느껴진 당신은 **학생들이 뽑은 후보들을 입력받으면 뽑힌 학생의 이름과 받은 표 수를 출력하는 프로그램**을 작성하기로 하였습니다. + +```jsx +**입력** +원범 원범 혜원 혜원 혜원 혜원 유진 유진 + +**출력** +혜원(이)가 총 4표로 반장이 되었습니다. +``` +*/ + +const arr = ["원범", "원범", "혜원", "혜원", "혜원", "혜원", "유진", "유진"]; +let result = {}; +let winner = ""; + +for (let i in arr) { + let value = arr[i]; + if (result[value] === undefined) { + result[value] = 1; + } else { + result[value] = result[value] + 1; + } + + winner = Object.keys(result).reduce((a, b) => { + return result[a] > result[b] ? a : b; + }); +} + +console.log(`${winner}(이)가 총 ${result[winner]}표로 반장이 되었습니다.`); diff --git "a/Challenge/YurinWang/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/README.md" "b/Challenge/YurinWang/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/README.md" new file mode 100644 index 0000000..36a32d4 --- /dev/null +++ "b/Challenge/YurinWang/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/README.md" @@ -0,0 +1,13 @@ +# 문제38 : 호준이의 아르바이트 + +호준이는 아르바이트로 영어 학원에서 단어 시험지를 채점하는 일을 하고 있다. 호준이가 일하는 학원은 매번 1위부터 3위까지의 학생에게 상으로 사탕을 준다. 그런데 오늘은 마침 사탕이 다 떨어져서 호준이가 채점을 하고 점수를 보내면, 당신이 아이들의 숫자만큼 사탕을 사러 가기로 했다. + +1위 ~ 3위 학생은 여러명일 수 있고 1~3위 학생 중 중복되는 학생까지 포함하여 사탕을 사기로 한다. +**학생들의 점수를 공백으로 구분하여 입력을 받고 사탕을 받을 학생의 수를 출력하세요.** + +```jsx +**입출력** + +입력 : 97 86 75 66 55 97 85 97 97 95 +출력 : 6 +``` \ No newline at end of file diff --git "a/Challenge/YurinWang/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/solve.js" "b/Challenge/YurinWang/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/solve.js" new file mode 100644 index 0000000..794e6db --- /dev/null +++ "b/Challenge/YurinWang/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/solve.js" @@ -0,0 +1,32 @@ +/* +# 문제38 : 호준이의 아르바이트 + +호준이는 아르바이트로 영어 학원에서 단어 시험지를 채점하는 일을 하고 있다. 호준이가 일하는 학원은 매번 1위부터 3위까지의 학생에게 상으로 사탕을 준다. 그런데 오늘은 마침 사탕이 다 떨어져서 호준이가 채점을 하고 점수를 보내면, 당신이 아이들의 숫자만큼 사탕을 사러 가기로 했다. + +1위 ~ 3위 학생은 여러명일 수 있고 1~3위 학생 중 중복되는 학생까지 포함하여 사탕을 사기로 한다. +**학생들의 점수를 공백으로 구분하여 입력을 받고 사탕을 받을 학생의 수를 출력하세요.** + +```jsx +**입출력** + +입력 : 97 86 75 66 55 97 85 97 97 95 +출력 : 6 +``` +*/ + +// 중복인정? +const scores = prompt().split(" "); + +const sortScores = scores.sort((a, b) => b - a); +let count = 0; +let result = new Set([]); + +sortScores.forEach((e) => { + if (result.size < 3) { + result.add(e); + count++; + } + return result; +}); +console.log(count); +console.log(result); diff --git "a/Challenge/YurinWang/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" "b/Challenge/YurinWang/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" new file mode 100644 index 0000000..3b0af06 --- /dev/null +++ "b/Challenge/YurinWang/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" @@ -0,0 +1,18 @@ +# 문제39 : 오타 수정하기 + +혜원이는 평소 영타가 빠르고 정확한 것을 친구들에게 자랑하고 다녔습니다. 반 친구들이 혜원이의 타자 속도가 빠르다는 것을 모두 알게 되자 혜원이는 모두의 앞에서 타자 실력을 보여주게 됩니다. + +그런데 막상 보여주려니 긴장이 되서 문장의 모든 e를 q로 잘못 친 것을 발견했습니다. +혜원이는 프로그램을 돌려 재빠르게 모든 q를 e로 바꾸는 프로그램을 작성하려고 합니다. + +**문장이 입력되면 모든 q를 e로 바꾸는 프로그램을 작성해 주세요.** + +```jsx +**입출력** + +입력 : querty +출력 : euerty + +입력 : hqllo my namq is hyqwon +출력 : hello my name is hyewon +``` \ No newline at end of file diff --git "a/Challenge/YurinWang/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" "b/Challenge/YurinWang/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" new file mode 100644 index 0000000..6cbb88f --- /dev/null +++ "b/Challenge/YurinWang/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" @@ -0,0 +1,23 @@ +/* +# 문제39 : 오타 수정하기 + +혜원이는 평소 영타가 빠르고 정확한 것을 친구들에게 자랑하고 다녔습니다. 반 친구들이 혜원이의 타자 속도가 빠르다는 것을 모두 알게 되자 혜원이는 모두의 앞에서 타자 실력을 보여주게 됩니다. + +그런데 막상 보여주려니 긴장이 되서 문장의 모든 e를 q로 잘못 친 것을 발견했습니다. +혜원이는 프로그램을 돌려 재빠르게 모든 q를 e로 바꾸는 프로그램을 작성하려고 합니다. + +**문장이 입력되면 모든 q를 e로 바꾸는 프로그램을 작성해 주세요.** + +```jsx +**입출력** + +입력 : querty +출력 : euerty + +입력 : hqllo my namq is hyqwon +출력 : hello my name is hyewon +``` +*/ + +const changeQtoE = prompt(); +console.log(changeQtoE.replace(/q/gi, "e")); diff --git "a/Challenge/YurinWang/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/README.md" "b/Challenge/YurinWang/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/README.md" new file mode 100644 index 0000000..324d030 --- /dev/null +++ "b/Challenge/YurinWang/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/README.md" @@ -0,0 +1,22 @@ +# 문제40 : 놀이동산에 가자 + +테마파크에 온 원범이와 친구들은 놀이기구를 타려고 합니다. 모든 놀이기구는 한번에 타는 인원수에는 제한이 없지만 제한 무게를 넘으면 무조건 다음 기구를 타야 합니다. + +**원범이와 친구들이 총 몇 명 탈 수 있는지 알 수 있는 프로그램을 작성해 주세요.** + +첫번째 입력으로 제한 무게가 주어지고 두번째 입력으로는 함께한 친구들의 수 n이 주어집니다. +그 다음 차례대로 탑승할 친구들의 몸무게가 주어집니다. 몸무게는 무작위로 주어집니다. + +```jsx +**입력** +50 +5 +20 +20 +20 +20 +20 + +**출력** +2 +``` \ No newline at end of file diff --git "a/Challenge/YurinWang/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/solve.js" "b/Challenge/YurinWang/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/solve.js" new file mode 100644 index 0000000..cb6c2f1 --- /dev/null +++ "b/Challenge/YurinWang/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/solve.js" @@ -0,0 +1,37 @@ +/* +# 문제40 : 놀이동산에 가자 + +테마파크에 온 원범이와 친구들은 놀이기구를 타려고 합니다. 모든 놀이기구는 한번에 타는 인원수에는 제한이 없지만 제한 무게를 넘으면 무조건 다음 기구를 타야 합니다. + +**원범이와 친구들이 총 몇 명 탈 수 있는지 알 수 있는 프로그램을 작성해 주세요.** + +첫번째 입력으로 제한 무게가 주어지고 두번째 입력으로는 함께한 친구들의 수 n이 주어집니다. +그 다음 차례대로 탑승할 친구들의 몸무게가 주어집니다. 몸무게는 무작위로 주어집니다. + +```jsx +**입력** +50 +5 +20 +20 +20 +20 +20 + +**출력** +2 +``` +*/ + +const limitWeight = 50; +const person = 5; +let count = 0; +let totalWeight = 0; + +for (let i = 0; i < person; i++) { + totalWeight = totalWeight + Number(prompt("몸무게를 입력해주세요.")); + if (totalWeight <= limitWeight) { + count++; + } +} +console.log(count); diff --git "a/Challenge/YurinWang/041.\354\206\214\354\210\230\355\214\220\353\263\204/README.md" "b/Challenge/YurinWang/041.\354\206\214\354\210\230\355\214\220\353\263\204/README.md" new file mode 100644 index 0000000..11c15e3 --- /dev/null +++ "b/Challenge/YurinWang/041.\354\206\214\354\210\230\355\214\220\353\263\204/README.md" @@ -0,0 +1,5 @@ +# 문제41 : 소수판별 + +숫자가 주어지면 **소수인지 아닌지 판별하는 프로그램**을 작성해주세요. +소수이면 YES로, 소수가 아니면 NO로 출력해주세요. +(소수 : 1과 자기 자신만으로 나누어떨어지는 1보다 큰 양의 정수) \ No newline at end of file diff --git "a/Challenge/YurinWang/041.\354\206\214\354\210\230\355\214\220\353\263\204/solve.js" "b/Challenge/YurinWang/041.\354\206\214\354\210\230\355\214\220\353\263\204/solve.js" new file mode 100644 index 0000000..e5c27bb --- /dev/null +++ "b/Challenge/YurinWang/041.\354\206\214\354\210\230\355\214\220\353\263\204/solve.js" @@ -0,0 +1,16 @@ +/* +# 문제41 : 소수판별 + +숫자가 주어지면 **소수인지 아닌지 판별하는 프로그램**을 작성해주세요. +소수이면 YES로, 소수가 아니면 NO로 출력해주세요. +(소수 : 1과 자기 자신만으로 나누어떨어지는 1보다 큰 양의 정수) +*/ +const num = prompt("숫자를 입력해주세요"); + +function prime(num) { + for (let i = 2; i < num; i++) { + let result = num % i === 0 ? console.log("NO") : console.log("YES"); + return result; + } +} +prime(num); diff --git "a/Challenge/YurinWang/042.2020\353\205\204/README.md" "b/Challenge/YurinWang/042.2020\353\205\204/README.md" new file mode 100644 index 0000000..6fc7600 --- /dev/null +++ "b/Challenge/YurinWang/042.2020\353\205\204/README.md" @@ -0,0 +1,12 @@ +# 문제42 : 2020년 + +2020년 1월 1일은 수요일입니다. 2020년 a월 b일은 무슨 요일일까요? +두 수 a, b를 입력받아 2020년 a월 b일이 무슨 요일인지 리턴하는 함수 solution을 완성하세요. +요일의 이름은 일요일부터 토요일까지 각각 SUN, MON, TUE, WED, THU, FRI, SAT 입니다. + +예를 들어 a = 5, b = 24라면 5월 24일은 일요일이므로 문자열 "SUN"를 반환하세요. + +**제한 조건** +2020년은 윤년입니다. +2020년 a월 b일은 실제로 있는 날입니다. +(13월 26일이나 2월 45일 같은 날짜는 주어지지 않습니다.) \ No newline at end of file diff --git "a/Challenge/YurinWang/042.2020\353\205\204/solve.js" "b/Challenge/YurinWang/042.2020\353\205\204/solve.js" new file mode 100644 index 0000000..bc9ff72 --- /dev/null +++ "b/Challenge/YurinWang/042.2020\353\205\204/solve.js" @@ -0,0 +1,26 @@ +/* +# 문제42 : 2020년 + +2020년 1월 1일은 수요일입니다. 2020년 a월 b일은 무슨 요일일까요? +두 수 a, b를 입력받아 2020년 a월 b일이 무슨 요일인지 리턴하는 함수 solution을 완성하세요. +요일의 이름은 일요일부터 토요일까지 각각 SUN, MON, TUE, WED, THU, FRI, SAT 입니다. + +예를 들어 a = 5, b = 24라면 5월 24일은 일요일이므로 문자열 "SUN"를 반환하세요. + +**제한 조건** +2020년은 윤년입니다. +2020년 a월 b일은 실제로 있는 날입니다. +(13월 26일이나 2월 45일 같은 날짜는 주어지지 않습니다.) +*/ + +const month = prompt("몇 월?"); +const date = prompt("며칠?"); +const day = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"]; + +function result(month, date) { + const theDay = new Date(2020, month - 1, date); + // console.log(theDay.getDay()) + console.log(day[theDay.getDay()]); +} + +result(month, date); diff --git "a/Challenge/YurinWang/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/README.md" "b/Challenge/YurinWang/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/README.md" new file mode 100644 index 0000000..1f52218 --- /dev/null +++ "b/Challenge/YurinWang/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/README.md" @@ -0,0 +1,6 @@ +# 문제43 : 10진수를 2진수로 + +우리가 흔히 사용하는 숫자 1, 8, 19, 28893 등등...은 10진수 체계입니다. +이를 컴퓨터가 알아 들을 수 있는 2진수로 바꾸려고 합니다. 어떻게 해야할까요? + +**사용자에게 숫자를 입력받고 이를 2진수를 바꾸고 그 값을 출력해주세요.** \ No newline at end of file diff --git "a/Challenge/YurinWang/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/solve.js" "b/Challenge/YurinWang/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/solve.js" new file mode 100644 index 0000000..ca99e3d --- /dev/null +++ "b/Challenge/YurinWang/043.10\354\247\204\354\210\230\353\245\274_2\354\247\204\354\210\230\353\241\234/solve.js" @@ -0,0 +1,10 @@ +/* +# 문제43 : 10진수를 2진수로 + +우리가 흔히 사용하는 숫자 1, 8, 19, 28893 등등...은 10진수 체계입니다. +이를 컴퓨터가 알아 들을 수 있는 2진수로 바꾸려고 합니다. 어떻게 해야할까요? + +**사용자에게 숫자를 입력받고 이를 2진수를 바꾸고 그 값을 출력해주세요.** +*/ +const num = Number(prompt("숫자를 입력해주세요")); +console.log(num.toString(2)); diff --git "a/Challenge/YurinWang/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/README.md" "b/Challenge/YurinWang/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/README.md" new file mode 100644 index 0000000..c581b86 --- /dev/null +++ "b/Challenge/YurinWang/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/README.md" @@ -0,0 +1,17 @@ +# 문제44 : 각 자리수의 합 + +**사용자가 입력한 양의 정수의 각 자리수의 합을 구하는 프로그램**을 만들어주세요 + +**예를들어** +18234 = 1+8+2+3+4 이고 정답은 18 입니다. +3849 = 3+8+4+9 이고 정답은 24입니다. + +```jsx +**입출력** + +입력 : 18234 +출력 : 18 + +입력 : 3849 +출력 : 24 +``` \ No newline at end of file diff --git "a/Challenge/YurinWang/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/solve.js" "b/Challenge/YurinWang/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/solve.js" new file mode 100644 index 0000000..2347f3b --- /dev/null +++ "b/Challenge/YurinWang/044.\352\260\201_\354\236\220\353\246\254\354\210\230\354\235\230_\355\225\251/solve.js" @@ -0,0 +1,26 @@ +/* +# 문제44 : 각 자리수의 합 + +**사용자가 입력한 양의 정수의 각 자리수의 합을 구하는 프로그램**을 만들어주세요 + +**예를들어** +18234 = 1+8+2+3+4 이고 정답은 18 입니다. +3849 = 3+8+4+9 이고 정답은 24입니다. + +```jsx +**입출력** + +입력 : 18234 +출력 : 18 + +입력 : 3849 +출력 : 24 +``` +*/ + +const num = prompt("숫자를 입력해주세요.").split(""); +let sum = 0; +for (let i = 0; i < num.length; i++) { + sum += Number(num[i]); +} +console.log(sum); diff --git a/Challenge/YurinWang/045.getTime/README.md b/Challenge/YurinWang/045.getTime/README.md new file mode 100644 index 0000000..6ce968a --- /dev/null +++ b/Challenge/YurinWang/045.getTime/README.md @@ -0,0 +1,5 @@ +# 문제45 : getTime()함수 사용하기 + +Date객체의 메소드 중 하나인 getTime()은 1970년 1월 1일 0시 0분 0초 이후로부터 지금까지 흐른 시간을 천분의 1초 단위(ms)로 반환합니다. + +이를 이용하여 **현재 연도(2019)를 출력해보세요.** diff --git a/Challenge/YurinWang/045.getTime/solve.js b/Challenge/YurinWang/045.getTime/solve.js new file mode 100644 index 0000000..ecb409e --- /dev/null +++ b/Challenge/YurinWang/045.getTime/solve.js @@ -0,0 +1,11 @@ +/* +# 문제45 : getTime()함수 사용하기 + +Date객체의 메소드 중 하나인 getTime()은 1970년 1월 1일 0시 0분 0초 이후로부터 지금까지 흐른 시간을 천분의 1초 단위(ms)로 반환합니다. + +이를 이용하여 **현재 연도(2019)를 출력해보세요.** +*/ + +const time = new Date(); +console.log(time.getTime()); +console.log(Math.floor(time.getTime() / (60 * 60 * 24 * 365 * 1000)) + 1970); diff --git "a/Challenge/YurinWang/046.\352\260\201_\354\236\220\353\246\254\354\210\230_\355\225\2512/README.md" "b/Challenge/YurinWang/046.\352\260\201_\354\236\220\353\246\254\354\210\230_\355\225\2512/README.md" new file mode 100644 index 0000000..ece3532 --- /dev/null +++ "b/Challenge/YurinWang/046.\352\260\201_\354\236\220\353\246\254\354\210\230_\355\225\2512/README.md" @@ -0,0 +1,6 @@ +# 문제46 : 각 자리수의 합 2 + +1부터 20까지의(20을 포함) 모든 숫자를 일렬로 놓고 모든 자릿수의 총 합을 구하세요. + +예를 들어 10부터 15까지의 모든 숫자를 일렬로 놓으면 101112131415이고 +각 자리의 숫자를 더하면 21입니다. (1+0+1+1+1+2+1+3+1+4+1+5 = 21) diff --git "a/Challenge/YurinWang/046.\352\260\201_\354\236\220\353\246\254\354\210\230_\355\225\2512/solve.js" "b/Challenge/YurinWang/046.\352\260\201_\354\236\220\353\246\254\354\210\230_\355\225\2512/solve.js" new file mode 100644 index 0000000..792ba50 --- /dev/null +++ "b/Challenge/YurinWang/046.\352\260\201_\354\236\220\353\246\254\354\210\230_\355\225\2512/solve.js" @@ -0,0 +1,24 @@ +/* +# 문제46 : 각 자리수의 합 2 + +1부터 20까지의(20을 포함) 모든 숫자를 일렬로 놓고 모든 자릿수의 총 합을 구하세요. + +예를 들어 10부터 15까지의 모든 숫자를 일렬로 놓으면 101112131415이고 +각 자리의 숫자를 더하면 21입니다. (1+0+1+1+1+2+1+3+1+4+1+5 = 21) +*/ + +let arr = []; +let sum = 0; + +for (let i = 0; i < 20; i++) { + arr[i] = i + 1; +} + +arr.forEach((n) => { + while (n !== 0) { + sum += n % 10; + n = Math.floor(n / 10); + } +}); + +console.log(sum); diff --git "a/Challenge/YurinWang/050.\353\262\204\353\270\224\354\240\225\353\240\254_\352\265\254\355\230\204\355\225\230\352\270\260/README.md" "b/Challenge/YurinWang/050.\353\262\204\353\270\224\354\240\225\353\240\254_\352\265\254\355\230\204\355\225\230\352\270\260/README.md" new file mode 100644 index 0000000..194dd74 --- /dev/null +++ "b/Challenge/YurinWang/050.\353\262\204\353\270\224\354\240\225\353\240\254_\352\265\254\355\230\204\355\225\230\352\270\260/README.md" @@ -0,0 +1,26 @@ +# 문제50 : 버블정렬 구현하기 + +버블정렬은 두 인접한 원소를 검사하여 정렬하는 방법을 말합니다. 시간 복잡도는 느리지만 코드가 단순하기 때문에 자주 사용됩니다. + +아래 코드의 빈 칸을 채워 버블 정렬을 완성해 봅시다. + +```jsx +function bubble(arr) { + let result = arr.slice(); + + for (let i = 0; i < result.length - 1; i++) { + for (/*빈칸을 채워주세요.*/) { + if (result[j] > result[j + 1]) { + //빈칸을 채워주세요. + } + } + } + return result; +} + +const items = prompt('입력해주세요.').split(' ').map((n) => { + return parseInt(n, 10); +}); + +console.log(bubble(items)); +``` diff --git "a/Challenge/YurinWang/050.\353\262\204\353\270\224\354\240\225\353\240\254_\352\265\254\355\230\204\355\225\230\352\270\260/solve.js" "b/Challenge/YurinWang/050.\353\262\204\353\270\224\354\240\225\353\240\254_\352\265\254\355\230\204\355\225\230\352\270\260/solve.js" new file mode 100644 index 0000000..831c495 --- /dev/null +++ "b/Challenge/YurinWang/050.\353\262\204\353\270\224\354\240\225\353\240\254_\352\265\254\355\230\204\355\225\230\352\270\260/solve.js" @@ -0,0 +1,31 @@ +/* +# 문제50 : 버블정렬 구현하기 + +버블정렬은 두 인접한 원소를 검사하여 정렬하는 방법을 말합니다. 시간 복잡도는 느리지만 코드가 단순하기 때문에 자주 사용됩니다. + + +아래 코드의 빈 칸을 채워 버블 정렬을 완성해 봅시다. +*/ + +function bubble(arr) { + let result = arr.slice(); + + for (let i = 0; i < result.length - 1; i++) { + for (let j = 0; j < result.length - i; j++) { + if (result[j] > result[j + 1]) { + let value = result[j]; + result[j] = result[j + 1]; + result[j + 1] = value; + } + } + } + return result; +} + +const items = prompt("입력해주세요.") + .split(" ") + .map((n) => { + return parseInt(n, 10); + }); + +console.log(bubble(items)); diff --git a/Challenge/YurinWang/051.merge_sort/README.md b/Challenge/YurinWang/051.merge_sort/README.md new file mode 100644 index 0000000..6b1c81b --- /dev/null +++ b/Challenge/YurinWang/051.merge_sort/README.md @@ -0,0 +1,50 @@ +# 문제51 : merge sort를 만들어보자 + +병합정렬(merge sort)은 대표적인 정렬 알고리즘 중 하나로 다음과 같이 동작합니다. + +> 1. 리스트의 길이가 0 또는 1이면 이미 정렬된 것으로 본다. 그렇지 않은 경우에는 +> 2. 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. +> 3. 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다. +> 4. 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. + +출처 : 위키피디아 + +다음 코드의 빈칸을 채워 병합정렬을 완성해 봅시다. + +```jsx +function mergeSort(arr){ + if (arr.length <= 1){ + return arr; + } + + const mid = Math.floor(arr.length / 2); + const left = arr.slice(0,mid); + const right = arr.slice(mid); + + return merge(mergeSort(left), mergeSort(right)); +} + +function merge(left, right){ + let result = []; + + while (/*빈칸을 채워주세요*/ && /*빈칸을 채워주세요*/){ + if (/*빈칸을 채워주세요*/){ + result.push(left.shift()); + } else { + result.push(right.shift()); + } + } + while (left.length) { + /*빈칸을 채워주세요*/ + } + while (right.length) { + /*빈칸을 채워주세요*/ + } + + return result; +} + +const array = prompt('배열을 입력하세요').split(' ').map(n => parseInt(n, 10)); + +console.log(mergeSort(array)); +``` diff --git a/Challenge/YurinWang/051.merge_sort/solve.js b/Challenge/YurinWang/051.merge_sort/solve.js new file mode 100644 index 0000000..c27cd79 --- /dev/null +++ b/Challenge/YurinWang/051.merge_sort/solve.js @@ -0,0 +1,51 @@ +/* +# 문제51 : merge sort를 만들어보자 + +병합정렬(merge sort)은 대표적인 정렬 알고리즘 중 하나로 다음과 같이 동작합니다. + +> 1. 리스트의 길이가 0 또는 1이면 이미 정렬된 것으로 본다. 그렇지 않은 경우에는 +> 2. 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. +> 3. 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다. +> 4. 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. + +출처 : 위키피디아 + +다음 코드의 빈칸을 채워 병합정렬을 완성해 봅시다. +*/ + +function mergeSort(arr) { + if (arr.length <= 1) { + return arr; + } + + const mid = Math.floor(arr.length / 2); + const left = arr.slice(0, mid); + const right = arr.slice(mid); + + return merge(mergeSort(left), mergeSort(right)); +} + +function merge(left, right) { + let result = []; + + while (left.length && right.length) { + if (left[0] < right[0]) { + result.push(left.shift()); + } else { + result.push(right.shift()); + } + } + while (left.length) { + result.push(left.shift()); + } + while (right.length) { + result.push(right.shift()); + } + return result; +} + +const array = prompt("배열을 입력하세요") + .split(" ") + .map((n) => parseInt(n, 10)); + +console.log(mergeSort(array)); diff --git a/Challenge/YurinWang/052.quick_sort/README.md b/Challenge/YurinWang/052.quick_sort/README.md new file mode 100644 index 0000000..83937a5 --- /dev/null +++ b/Challenge/YurinWang/052.quick_sort/README.md @@ -0,0 +1,28 @@ +# 문제52 : quick sort + +다음 빈 칸을 채워 퀵 정렬을 완성해주세요. + +```jsx +function quickSort(arr){ + if (arr.length <= 1){ + return arr; + } + + const pivot = arr[0]; + const left = []; + const right = []; + + for (let i=1; i parseInt(n, 10)); + +console.log(quickSort(array)); +``` diff --git a/Challenge/YurinWang/052.quick_sort/solve.js b/Challenge/YurinWang/052.quick_sort/solve.js new file mode 100644 index 0000000..e097d7e --- /dev/null +++ b/Challenge/YurinWang/052.quick_sort/solve.js @@ -0,0 +1,31 @@ +/* +# 문제52 : quick sort + +다음 빈 칸을 채워 퀵 정렬을 완성해주세요. +*/ + +function quickSort(arr) { + if (arr.length <= 1) { + return arr; + } + + const pivot = arr[0]; + const left = []; + const right = []; + + for (let i = 1; i < arr.length; i++) { + if (arr[i] < pivot) { + left.push(arr[i]); + } else { + right.push(arr[i]); + } + } + // return quickSort(left) + pivot + quickSort(right); + return quickSort(left).concat(pivot, quickSort(right)); +} + +const array = prompt("배열을 입력하세요") + .split(" ") + .map((n) => parseInt(n, 10)); + +console.log(quickSort(array)); diff --git "a/Challenge/YurinWang/054.\354\227\260\354\206\215\353\220\230\353\212\224_\354\210\230/README.md" "b/Challenge/YurinWang/054.\354\227\260\354\206\215\353\220\230\353\212\224_\354\210\230/README.md" new file mode 100644 index 0000000..7f0af59 --- /dev/null +++ "b/Challenge/YurinWang/054.\354\227\260\354\206\215\353\220\230\353\212\224_\354\210\230/README.md" @@ -0,0 +1,21 @@ +# 문제54 : 연속되는 수 + +은주는 놀이공원 아르바이트를 하고 있다. 은주가 일하는 놀이공원에서는 현재 놀이공원 곳곳에 숨겨진 숫자 스탬프를 모아 오면 선물을 주는 이벤트를 하고 있다. 숫자 스탬프는 매일 그 수와 스탬프에 적힌 숫자가 바뀌지만 그 숫자는 항상 연속된다. +그런데 요즘 다른 날에 찍은 스탬프를 가지고 와 선물을 달라고 하는 손님이 늘었다. + +스탬프에 적힌 숫자가 공백으로 구분되어 주어지면 이 숫자가 연속수인지 아닌지 "YES"와 "NO"로 판별하는 프로그램을 작성하시오 + +```jsx +입력1 +1 2 3 4 5 + +출력1 +YES + + +입력2 +1 4 2 6 3 + +출력2 +NO +``` diff --git "a/Challenge/YurinWang/054.\354\227\260\354\206\215\353\220\230\353\212\224_\354\210\230/solve.js" "b/Challenge/YurinWang/054.\354\227\260\354\206\215\353\220\230\353\212\224_\354\210\230/solve.js" new file mode 100644 index 0000000..008319f --- /dev/null +++ "b/Challenge/YurinWang/054.\354\227\260\354\206\215\353\220\230\353\212\224_\354\210\230/solve.js" @@ -0,0 +1,37 @@ +/* +# 문제54 : 연속되는 수 + +은주는 놀이공원 아르바이트를 하고 있다. 은주가 일하는 놀이공원에서는 현재 놀이공원 곳곳에 숨겨진 숫자 스탬프를 모아 오면 선물을 주는 이벤트를 하고 있다. 숫자 스탬프는 매일 그 수와 스탬프에 적힌 숫자가 바뀌지만 그 숫자는 항상 연속된다. +그런데 요즘 다른 날에 찍은 스탬프를 가지고 와 선물을 달라고 하는 손님이 늘었다. + +스탬프에 적힌 숫자가 공백으로 구분되어 주어지면 이 숫자가 연속수인지 아닌지 "YES"와 "NO"로 판별하는 프로그램을 작성하시오 + +```jsx +입력1 +1 2 3 4 5 + +출력1 +YES + + +입력2 +1 4 2 6 3 + +출력2 +NO +``` +*/ + +function count(array) { + for (let i = 0; i < array.length - 1; i++) { + if (array[i + 1] !== array[i] + 1) { + return "NO"; + } + } + return "YES"; +} + +const num = prompt() + .split(" ") + .map((n) => parseInt(n, 10)); +console.log(count(num)); diff --git a/Challenge/hyebinWoo/014.if/README.md b/Challenge/hyebinWoo/014.if/README.md new file mode 100644 index 0000000..488df61 --- /dev/null +++ b/Challenge/hyebinWoo/014.if/README.md @@ -0,0 +1,17 @@ +# 문제14 : 3의 배수 인가요? + +영희는 친구와 게임을 하고 있습니다. 서로 돌아가며 랜덤으로 숫자를 하나 말하고 그게 3의 배수이면 박수를 치고 아니면 그 숫자를 그대로 말하는 게임입니다. + +입력으로 랜덤한 숫자 n이 주어집니다. + +만약 그 수가 **3의 배수라면 '짝'이라는 글자를, 3의 배수가 아니라면 n을 그대로 출력**해 주세요. + +```jsx +**입출력** + +입력 : 3 +출력 : 짝 + +입력 : 2 +출력 : 2 +``` \ No newline at end of file diff --git a/Challenge/hyebinWoo/014.if/solve.js b/Challenge/hyebinWoo/014.if/solve.js new file mode 100644 index 0000000..1759ec1 --- /dev/null +++ b/Challenge/hyebinWoo/014.if/solve.js @@ -0,0 +1,35 @@ +/* +# 문제14 : 3의 배수 인가요? + +영희는 친구와 게임을 하고 있습니다. 서로 돌아가며 랜덤으로 숫자를 하나 말하고 그게 3의 배수이면 박수를 치고 아니면 그 숫자를 그대로 말하는 게임입니다. + +입력으로 랜덤한 숫자 n이 주어집니다. + +만약 그 수가 **3의 배수라면 '짝'이라는 글자를, 3의 배수가 아니라면 n을 그대로 출력**해 주세요. + +**입출력** + +입력 : 3 +출력 : 짝 + +입력 : 2 +출력 : 2 +*/ + +function 삼육구(number) { + let nums = number.toString().split(""); + let clap = []; + + for (let num of nums) { + if (num === "3" || num === "6" || num === "9") { + clap.push("짝"); + } + } + if (clap.length == 0) { + return console.log(number); + } else { + return console.log(clap.join()); + } +} + +삼육구(prompt("랜덤으로 아무 숫자나 입력하세요")); diff --git a/Challenge/hyebinWoo/015.template _literals/README.md b/Challenge/hyebinWoo/015.template _literals/README.md new file mode 100644 index 0000000..2056ef3 --- /dev/null +++ b/Challenge/hyebinWoo/015.template _literals/README.md @@ -0,0 +1,13 @@ +# 문제15 : 자기소개 + +신학기가 시작되고, 아이들이 돌아가면서 자기소개를 하기로 했습니다. + +만약 입력으로 `김다정`이라는 이름이 주어지면 "안녕하세요. 저는 김다정입니다."라고 출력하게 +해주세요. + +```jsx +**입출력** + +입력 : 김다정 +출력 : 안녕하세요. 저는 김다정입니다. +``` \ No newline at end of file diff --git a/Challenge/hyebinWoo/015.template _literals/solve.js b/Challenge/hyebinWoo/015.template _literals/solve.js new file mode 100644 index 0000000..045b4e9 --- /dev/null +++ b/Challenge/hyebinWoo/015.template _literals/solve.js @@ -0,0 +1,18 @@ +/* +# 문제15 : 자기소개 + +신학기가 시작되고, 아이들이 돌아가면서 자기소개를 하기로 했습니다. + +만약 입력으로 `김다정`이라는 이름이 주어지면 "안녕하세요. 저는 김다정입니다."라고 출력하게 +해주세요. + +**입출력** + +입력 : 김다정 +출력 : 안녕하세요. 저는 김다정입니다. +*/ + +function inName(name) { + return console.log(`안녕하세요 저는 ${name}입니다.`); +} +inName(prompt("이름을 입력하세요.")); diff --git "a/Challenge/hyebinWoo/016.\353\241\234\352\276\270\352\272\274/README.md" "b/Challenge/hyebinWoo/016.\353\241\234\352\276\270\352\272\274/README.md" new file mode 100644 index 0000000..6528a39 --- /dev/null +++ "b/Challenge/hyebinWoo/016.\353\241\234\352\276\270\352\272\274/README.md" @@ -0,0 +1,10 @@ +# 문제16 : 로꾸거 + +문장이 입력되면 거꾸로 출력하는 프로그램을 만들어 봅시다. + +```jsx +**입출력** + +입력 : 거꾸로 +출력 : 로꾸거 +``` diff --git "a/Challenge/hyebinWoo/016.\353\241\234\352\276\270\352\272\274/solve.js" "b/Challenge/hyebinWoo/016.\353\241\234\352\276\270\352\272\274/solve.js" new file mode 100644 index 0000000..739207c --- /dev/null +++ "b/Challenge/hyebinWoo/016.\353\241\234\352\276\270\352\272\274/solve.js" @@ -0,0 +1,16 @@ +/* +# 문제16 : 로꾸거 + +문장이 입력되면 거꾸로 출력하는 프로그램을 만들어 봅시다. + +입력 : 거꾸로 +출력 : 로꾸거 + +*/ + +function reverse(text) { + const reverse = text.split("").reverse().join(""); + return reverse; +} + +reverse(prompt("반대로 출력되게 해줄게요.")); diff --git a/Challenge/hyebinWoo/017.limit/README.md b/Challenge/hyebinWoo/017.limit/README.md new file mode 100644 index 0000000..b364fc6 --- /dev/null +++ b/Challenge/hyebinWoo/017.limit/README.md @@ -0,0 +1,7 @@ +# 문제17 : 놀이기구 키 제한 + +유주는 놀이공원 아르바이트 중입니다. 그런데 놀이기구마다 키 제한이 있습니다. +유주가 담당하는 놀이기구는 키가 150cm 이상만 탈 수 있습니다. + +입력으로 키가 주어지면 +키가 150이 넘으면 YES를 틀리면 NO를 출력하는 프로그램을 작성하세요. diff --git a/Challenge/hyebinWoo/017.limit/solve.js b/Challenge/hyebinWoo/017.limit/solve.js new file mode 100644 index 0000000..b435ab7 --- /dev/null +++ b/Challenge/hyebinWoo/017.limit/solve.js @@ -0,0 +1,20 @@ +/* +# 문제17 : 놀이기구 키 제한 + +유주는 놀이공원 아르바이트 중입니다. 그런데 놀이기구마다 키 제한이 있습니다. +유주가 담당하는 놀이기구는 키가 150cm 이상만 탈 수 있습니다. + +입력으로 키가 주어지면 +키가 150이 넘으면 YES를 틀리면 NO를 출력하는 프로그램을 작성하세요. +*/ + +function limit(height) { + // if (height >= 150) { + // console.log("YES"); + // } else { + // console.log("NO"); + // } + height >= 150 ? console.log("YES") : console.log("NO"); +} + +limit(prompt("키를 입력해주세요.")); diff --git a/Challenge/hyebinWoo/018.average/README.md b/Challenge/hyebinWoo/018.average/README.md new file mode 100644 index 0000000..ca04b62 --- /dev/null +++ b/Challenge/hyebinWoo/018.average/README.md @@ -0,0 +1,13 @@ +# 문제18 : 평균 점수 + +영하네 반은 국어, 수학, 영어 시험을 보았습니다. 영하는 친구들의 평균 점수를 구해주기로 했습니다. + +공백으로 구분하여 세 과목의 점수가 주어지면 전체 평균 점수를 구하는 프로그램을 작성하세요. +단, 소숫점 자리는 모두 버립니다. + +```jsx +**입출력** + +입력 : 20 30 40 +출력 : 30 +``` diff --git a/Challenge/hyebinWoo/018.average/solve.js b/Challenge/hyebinWoo/018.average/solve.js new file mode 100644 index 0000000..eca3f90 --- /dev/null +++ b/Challenge/hyebinWoo/018.average/solve.js @@ -0,0 +1,25 @@ +/* +# 문제18 : 평균 점수 + +영하네 반은 국어, 수학, 영어 시험을 보았습니다. 영하는 친구들의 평균 점수를 구해주기로 했습니다. + +공백으로 구분하여 세 과목의 점수가 주어지면 전체 평균 점수를 구하는 프로그램을 작성하세요. +단, 소숫점 자리는 모두 버립니다. + +**입출력** + +입력 : 20 30 40 +출력 : 30 + +*/ + +function Average(array) { + const result = array.reduce((pre, cur) => pre + cur, 0); + return Math.floor(result / array.length); +} + +Average( + prompt("평균을 구해드릴게요. 점수를 입력하세요!!") + .split(" ") + .map((x) => +x) +); diff --git a/Challenge/hyebinWoo/019.square/README.md b/Challenge/hyebinWoo/019.square/README.md new file mode 100644 index 0000000..e02a30a --- /dev/null +++ b/Challenge/hyebinWoo/019.square/README.md @@ -0,0 +1,3 @@ +문제19 : 제곱을 구하자 + +공백으로 구분하여 두 숫자 a와 b가 주어지면, a의 b승을 구하는 프로그램을 작성하세요. \ No newline at end of file diff --git a/Challenge/hyebinWoo/019.square/solve.js b/Challenge/hyebinWoo/019.square/solve.js new file mode 100644 index 0000000..5a8365b --- /dev/null +++ b/Challenge/hyebinWoo/019.square/solve.js @@ -0,0 +1,8 @@ +// 문제19 : 제곱을 구하자 + +// 공백으로 구분하여 두 숫자 a와 b가 주어지면, a의 b승을 구하는 프로그램을 작성하세요. + +const num = prompt().split(" "); + +//console.log(Math.pow(num[0], num[1])); +console.log(num.map((a, i) => a ** a)); diff --git a/Challenge/hyebinWoo/020.share-remainder/README.md b/Challenge/hyebinWoo/020.share-remainder/README.md new file mode 100644 index 0000000..91c7d9c --- /dev/null +++ b/Challenge/hyebinWoo/020.share-remainder/README.md @@ -0,0 +1,11 @@ +# 문제20 : 몫과 나머지 + +공백으로 구분하여 두 숫자가 주어집니다. +두번째 숫자로 첫번째 숫자를 나누었을 때 **그 몫과 나머지를 공백으로 구분하여 출력하세요.** + +```jsx +**입출력** + +입력 : 10 2 +출력 : 5 0 +``` \ No newline at end of file diff --git a/Challenge/hyebinWoo/020.share-remainder/solve.js b/Challenge/hyebinWoo/020.share-remainder/solve.js new file mode 100644 index 0000000..a43ffad --- /dev/null +++ b/Challenge/hyebinWoo/020.share-remainder/solve.js @@ -0,0 +1,11 @@ +/* +# 문제20 : 몫과 나머지 + +공백으로 구분하여 두 숫자가 주어집니다. +두번째 숫자로 첫번째 숫자를 나누었을 때 **그 몫과 나머지를 공백으로 구분하여 출력하세요.** + +**입출력** + +입력 : 10 2 +출력 : 5 0 +*/ \ No newline at end of file diff --git a/Challenge/hyebinWoo/021.set/README.md b/Challenge/hyebinWoo/021.set/README.md new file mode 100644 index 0000000..255a239 --- /dev/null +++ b/Challenge/hyebinWoo/021.set/README.md @@ -0,0 +1,9 @@ +# 문제21 : set은 어떻게 만드나요? + +다음 중 set을 만드는 방법으로 올바른 것을 모두 고르시오. + +1) var x = {1, 2, 3, 5, 6, 7}; +2) var x = {}; +3) var x = new Set('javascript'); +4) var x = new Set(range(5)); +5) var x = new Set(); \ No newline at end of file diff --git a/Challenge/hyebinWoo/021.set/solve.js b/Challenge/hyebinWoo/021.set/solve.js new file mode 100644 index 0000000..3642f9b --- /dev/null +++ b/Challenge/hyebinWoo/021.set/solve.js @@ -0,0 +1,14 @@ +/* +# 문제21 : set은 어떻게 만드나요? + +다음 중 set을 만드는 방법으로 올바른 것을 모두 고르시오. + +1) var x = {1, 2, 3, 5, 6, 7}; +2) var x = {}; +3) var x = new Set('javascript'); +4) var x = new Set(range(5)); +5) var x = new Set(); +*/ + +// 정답 3,5번 +// diff --git a/Challenge/hyebinWoo/022.multiple/README.md b/Challenge/hyebinWoo/022.multiple/README.md new file mode 100644 index 0000000..b4d74cc --- /dev/null +++ b/Challenge/hyebinWoo/022.multiple/README.md @@ -0,0 +1,9 @@ +# 문제22 : 배수인지 확인하기 + +다음 중 변수 i가 6의 배수인지 확인하는 방법으로 올바른 것은? + +1) i / 6 == 0 +2) i % 6 == 0 +3) i & 6 == 0 +4) i | 6 == 0 +5) i // 6 == 0 \ No newline at end of file diff --git a/Challenge/hyebinWoo/022.multiple/solve.js b/Challenge/hyebinWoo/022.multiple/solve.js new file mode 100644 index 0000000..fb7341b --- /dev/null +++ b/Challenge/hyebinWoo/022.multiple/solve.js @@ -0,0 +1,13 @@ +/* +# 문제22 : 배수인지 확인하기 + +다음 중 변수 i가 6의 배수인지 확인하는 방법으로 올바른 것은? + +1) i / 6 == 0 +2) i % 6 == 0 +3) i & 6 == 0 +4) i | 6 == 0 +5) i // 6 == 0 +*/ + +//정답 : 2번 diff --git a/Challenge/hyebinWoo/023.OX/README.md b/Challenge/hyebinWoo/023.OX/README.md new file mode 100644 index 0000000..47e0046 --- /dev/null +++ b/Challenge/hyebinWoo/023.OX/README.md @@ -0,0 +1,3 @@ +# 문제23 : OX문제 + +`console.log(10/3)`의 출력 결과는 **3**이다. \ No newline at end of file diff --git a/Challenge/hyebinWoo/023.OX/solve.js b/Challenge/hyebinWoo/023.OX/solve.js new file mode 100644 index 0000000..2684569 --- /dev/null +++ b/Challenge/hyebinWoo/023.OX/solve.js @@ -0,0 +1,7 @@ +// # 문제23: OX문제 + +// `console.log(10/3)`의 출력 결과는 ** 3 ** 이다. + +// X +// 결과: 3.333.... +// Math.floor() 함수를 사용하면 소숫점이 없는 정수를 출력할 수 있다. diff --git a/Challenge/hyebinWoo/024.toUpperCase/README.md b/Challenge/hyebinWoo/024.toUpperCase/README.md new file mode 100644 index 0000000..a5e5142 --- /dev/null +++ b/Challenge/hyebinWoo/024.toUpperCase/README.md @@ -0,0 +1,12 @@ +# 문제24 : 대문자로 바꿔주세요! + +민지는 국제 포럼에서 아르바이트를 하게 되었습니다. 민지는 각 국에서 온 참가자들의 명단을 엑셀로 정리하고 있는데 참가자들 이름이 어떤 이는 전부 소문자, 어떤 이는 전부 대문자로 써져 있는 등 형식이 제각각이었습니다. + +민지를 위해 **이름이 입력되면 전부 대문자로 출력되는 프로그램**을 만들어주세요. + +```jsx +**입출력** + +입력 : mary +출력 : MARY +``` \ No newline at end of file diff --git a/Challenge/hyebinWoo/024.toUpperCase/solve.js b/Challenge/hyebinWoo/024.toUpperCase/solve.js new file mode 100644 index 0000000..4c18551 --- /dev/null +++ b/Challenge/hyebinWoo/024.toUpperCase/solve.js @@ -0,0 +1,16 @@ +/* +# 문제24 : 대문자로 바꿔주세요! + +민지는 국제 포럼에서 아르바이트를 하게 되었습니다. 민지는 각 국에서 온 참가자들의 명단을 엑셀로 정리하고 있는데 참가자들 이름이 어떤 이는 전부 소문자, 어떤 이는 전부 대문자로 써져 있는 등 형식이 제각각이었습니다. + +민지를 위해 **이름이 입력되면 전부 대문자로 출력되는 프로그램**을 만들어주세요. + +**입출력** + +입력 : mary +출력 : MARY +*/ + +const name = prompt("소문자로 이름을 입력해주세요"); + +console.log(name.toUpperCase()); diff --git a/Challenge/hyebinWoo/025.circle-area/README.md b/Challenge/hyebinWoo/025.circle-area/README.md new file mode 100644 index 0000000..7e79bae --- /dev/null +++ b/Challenge/hyebinWoo/025.circle-area/README.md @@ -0,0 +1,8 @@ +# 문제 25: 원의 넓이를 구하세요 + +원의 넓이는 `반지름의 길이 x 반지름의 길이 x 3.14`로 구할 수 있습니다. +함수를 사용하여 원의 넓이를 구하는 코드를 작성해봅시다. + +**입력으로 반지름의 길이 정수 n이 주어지면 원의 넓이를 반환하는 함수**를 만들어 주세요. + + diff --git a/Challenge/hyebinWoo/025.circle-area/solve.js b/Challenge/hyebinWoo/025.circle-area/solve.js new file mode 100644 index 0000000..7d0ac61 --- /dev/null +++ b/Challenge/hyebinWoo/025.circle-area/solve.js @@ -0,0 +1,12 @@ +// # 문제 25: 원의 넓이를 구하세요 + +// 원의 넓이는 `반지름의 길이 x 반지름의 길이 x 3.14`로 구할 수 있습니다. +// 함수를 사용하여 원의 넓이를 구하는 코드를 작성해봅시다. + +// **입력으로 반지름의 길이 정수 n이 주어지면 원의 넓이를 반환하는 함수**를 만들어 주세요. + +function circle(r) { + return parseInt(r) ** 2 * 3.14; +} + +console.log(circle(prompt("반지름을 입력하세요"))); diff --git a/Challenge/hyebinWoo/026.planet_2/README.md b/Challenge/hyebinWoo/026.planet_2/README.md new file mode 100644 index 0000000..678e82a --- /dev/null +++ b/Challenge/hyebinWoo/026.planet_2/README.md @@ -0,0 +1,6 @@ +# 문제26 : 행성 문제2 + +우리 태양계를 이루는 행성은 수성, 금성, 지구, 화성, 목성, 토성, 천왕성, 해왕성이 있습니다. +이 행성들의 영어 이름은 Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune입니다. + +행성의 한글 이름을 입력하면 영어 이름을 반환하는 프로그램을 만들어 주세요. \ No newline at end of file diff --git a/Challenge/hyebinWoo/026.planet_2/solve.js b/Challenge/hyebinWoo/026.planet_2/solve.js new file mode 100644 index 0000000..bc8e56e --- /dev/null +++ b/Challenge/hyebinWoo/026.planet_2/solve.js @@ -0,0 +1,23 @@ +// 문제26 : 행성 문제2 + +// 우리 태양계를 이루는 행성은 수성, 금성, 지구, 화성, 목성, 토성, 천왕성, 해왕성이 있습니다. +// 이 행성들의 영어 이름은 Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune입니다. +// 행성의 한글 이름을 입력하면 영어 이름을 반환하는 프로그램을 만들어 주세요. + +const planet = { + 수성: "Mercury", + 금성: "Venus", + 지구: "Earth", + 화성: "Mars", + 목성: "Jupiter", + 토성: "Saturn", + 천왕성: "Uranus", + 해왕성: "Neptune", +}; + +const name = prompt("행성의 영어 이름을 말해드릴게요."); + +console.log(planet[name]); + +// planet.name이라고 생각했지만 +// 프로퍼티의 key에 변수가 포함되어 있으면 접근할 수 없다 diff --git a/Challenge/hyebinWoo/027.object/README.md b/Challenge/hyebinWoo/027.object/README.md new file mode 100644 index 0000000..9b83945 --- /dev/null +++ b/Challenge/hyebinWoo/027.object/README.md @@ -0,0 +1,14 @@ +# 문제27 : 객체 만들기 + +첫번째 입력에서는 학생의 이름이 공백으로 구분되어 입력되고, 두번째에는 그 학생의 수학 점수가 공백으로 구분되어 주어집니다. + +두 개를 합쳐 **학생의 이름이 key**이고 **value가 수학 점수**인 객체를 출력해주세요. + +```jsx +**입력** +Yujin Hyewon +70 100 + +**출력** +{'Yujin': 70, 'Hyewon': 100} +``` \ No newline at end of file diff --git a/Challenge/hyebinWoo/027.object/solve.js b/Challenge/hyebinWoo/027.object/solve.js new file mode 100644 index 0000000..0b3a7f8 --- /dev/null +++ b/Challenge/hyebinWoo/027.object/solve.js @@ -0,0 +1,21 @@ +// # 문제27 : 객체 만들기 + +// 첫번째 입력에서는 학생의 이름이 공백으로 구분되어 입력되고, 두번째에는 그 학생의 수학 점수가 공백으로 구분되어 주어집니다. + +// 두 개를 합쳐 **학생의 이름이 key**이고 **value가 수학 점수**인 객체를 출력해주세요. + +// **입력** +// Yujin Hyewon +// 70 100 + +// **출력** +// {'Yujin': 70, 'Hyewon': 100} +const name = prompt("학생의 이름을 입력해주세요.").split(" "); +const score = prompt("수학점수를 입력해주세요.").split(" "); + +const obj = new Object(); + +for (let i = 0; i < name.length; i++) { + obj[name[i]] = parseInt(score[i]); +} +console.log(obj); diff --git a/Challenge/hyebinWoo/028.2-gram/README.md b/Challenge/hyebinWoo/028.2-gram/README.md new file mode 100644 index 0000000..3a0dfe1 --- /dev/null +++ b/Challenge/hyebinWoo/028.2-gram/README.md @@ -0,0 +1,23 @@ +# 문제28 : 2-gram + +**2-gram**이란 문자열에서 2개의 연속된 요소를 출력하는 방법입니다. + +예를 들어 'Javascript'를 2-gram으로 반복해 본다면 다음과 같은 결과가 나옵니다. + +```jsx +**입력** +Javascript + +**출력** +J a +a v +v a +a s +s c +c r +r i +i p +p t +``` + +입력으로 문자열이 주어지면 **2-gram**으로 출력하는 프로그램을 작성해 주세요. \ No newline at end of file diff --git a/Challenge/hyebinWoo/028.2-gram/solve.js b/Challenge/hyebinWoo/028.2-gram/solve.js new file mode 100644 index 0000000..e8cf00e --- /dev/null +++ b/Challenge/hyebinWoo/028.2-gram/solve.js @@ -0,0 +1,27 @@ +// # 문제28 : 2-gram + +// **2-gram**이란 문자열에서 2개의 연속된 요소를 출력하는 방법입니다. + +// 예를 들어 'Javascript'를 2-gram으로 반복해 본다면 다음과 같은 결과가 나옵니다. + +// **입력** +// Javascript + +// **출력** +// J a +// a v +// v a +// a s +// s c +// c r +// r i +// i p +// p t + +// 입력으로 문자열이 주어지면 **2-gram**으로 출력하는 프로그램을 작성해 주세요. + +const input = prompt("문자를 입력해보세요."); + +for (let i = 0; i < input.length - 1; i++) { + console.log(input[i], input[i + 1]); +} diff --git "a/Challenge/hyebinWoo/029.\353\214\200\353\254\270\354\236\220/README.md" "b/Challenge/hyebinWoo/029.\353\214\200\353\254\270\354\236\220/README.md" new file mode 100644 index 0000000..287a235 --- /dev/null +++ "b/Challenge/hyebinWoo/029.\353\214\200\353\254\270\354\236\220/README.md" @@ -0,0 +1,5 @@ +# 문제29 : 대문자만 지나가세요 + +진구는 영어 학원 아르바이트를 하고 있습니다. 반 아이들은 알파벳을 공부하는 학생들인데 오늘은 대문자 쓰기 시험을 봤습니다. + +알파벳 하나만을 입력하고 그 알파벳이 대문자이면 YES를 아니면 NO를 출력하는 프로그램을 만들어 주세요. \ No newline at end of file diff --git "a/Challenge/hyebinWoo/029.\353\214\200\353\254\270\354\236\220/solve.js" "b/Challenge/hyebinWoo/029.\353\214\200\353\254\270\354\236\220/solve.js" new file mode 100644 index 0000000..5367330 --- /dev/null +++ "b/Challenge/hyebinWoo/029.\353\214\200\353\254\270\354\236\220/solve.js" @@ -0,0 +1,13 @@ +// 문제29 : 대문자만 지나가세요 + +// 진구는 영어 학원 아르바이트를 하고 있습니다. 반 아이들은 알파벳을 공부하는 학생들인데 오늘은 대문자 쓰기 시험을 봤습니다. + +// 알파벳 하나만을 입력하고 그 알파벳이 대문자이면 YES를 아니면 NO를 출력하는 프로그램을 만들어 주세요. + +const input = prompt("대문자면 YES를 드릴게요"); + +if (input == input.toUpperCase()) { + console.log("YES"); +} else { + console.log("NO"); +} diff --git a/Challenge/hyebinWoo/030.find-string/README.md b/Challenge/hyebinWoo/030.find-string/README.md new file mode 100644 index 0000000..b2f4ed6 --- /dev/null +++ b/Challenge/hyebinWoo/030.find-string/README.md @@ -0,0 +1,15 @@ +# 문제30 : 문자열 속 문자 찾기 + +문자 pineapple에는 apple이라는 문자가 숨어 있습니다. 원범이는 이렇듯 문자열 속에 숨어있는 문자를 찾아보려고 합니다. + +첫번째 입력에서는 문자열이 입력되고, 두번째에는 찾을 문자가 입력되어야 합니다. +**그 문자가 시작하는 index를 반환하는 프로그램**을 만들어 주세요 + +```jsx +**입력** +pineapple is yummy +apple + +**출력** +4 +``` \ No newline at end of file diff --git a/Challenge/hyebinWoo/030.find-string/solve.js b/Challenge/hyebinWoo/030.find-string/solve.js new file mode 100644 index 0000000..a781239 --- /dev/null +++ b/Challenge/hyebinWoo/030.find-string/solve.js @@ -0,0 +1,20 @@ +// # 문제30 : 문자열 속 문자 찾기 + +// 문자 pineapple에는 apple이라는 문자가 숨어 있습니다. 원범이는 이렇듯 문자열 속에 숨어있는 문자를 찾아보려고 합니다. + +// 첫번째 입력에서는 문자열이 입력되고, 두번째에는 찾을 문자가 입력되어야 합니다. +// **그 문자가 시작하는 index를 반환하는 프로그램**을 만들어 주세요 + +// ```jsx +// **입력** +// pineapple is yummy +// apple + +// **출력** +// 4 +// ``` + +const input_word = prompt("문자열을 입력해주세요."); +const find_word = prompt("앞에 문자열에서 찾을 단어 시작점을 알려드릴게요."); + +console.log(input_word.indexOf(find_word)); diff --git a/Challenge/hyebinWoo/031.timeComplexity/README.md b/Challenge/hyebinWoo/031.timeComplexity/README.md new file mode 100644 index 0000000..c10ae55 --- /dev/null +++ b/Challenge/hyebinWoo/031.timeComplexity/README.md @@ -0,0 +1,9 @@ +# 문제31 : 자바스크립트 자료형의 복잡도 + +다음 배열 내장함수의 시간 복잡도가 O(1)이 아닌 것을 모두 고르시오. + +1) arr[i] +2) arr.push(5) +3) arr.slice() +4) arr.pop() +5) arr.includes(5) \ No newline at end of file diff --git a/Challenge/hyebinWoo/031.timeComplexity/solve.js b/Challenge/hyebinWoo/031.timeComplexity/solve.js new file mode 100644 index 0000000..9d6f1e0 --- /dev/null +++ b/Challenge/hyebinWoo/031.timeComplexity/solve.js @@ -0,0 +1,14 @@ +/* +# 문제31 : 자바스크립트 자료형의 복잡도 + +다음 배열 내장함수의 시간 복잡도가 O(1)이 아닌 것을 모두 고르시오. + +1) arr[i] +2) arr.push(5) +3) arr.slice() +4) arr.pop() +5) arr.includes(5) +*/ + +// 3. 5번 +// 시간복잡도 빅오 표기법에서 O(1)은 속도가 일정한 것 diff --git "a/Challenge/hyebinWoo/032.\353\254\270\354\236\220\354\227\264\353\247\214\353\223\244\352\270\260/README.md" "b/Challenge/hyebinWoo/032.\353\254\270\354\236\220\354\227\264\353\247\214\353\223\244\352\270\260/README.md" new file mode 100644 index 0000000..53459f4 --- /dev/null +++ "b/Challenge/hyebinWoo/032.\353\254\270\354\236\220\354\227\264\353\247\214\353\223\244\352\270\260/README.md" @@ -0,0 +1,13 @@ +# 문제32 : 문자열 만들기 + +취업 준비생인 혜림이는 자기소개서를 쓰고 있습니다. 열심히 자기소개서를 작성하던 도중 혜림이는 자기가 지금까지 단어를 얼마나 적었는지 궁금하게 됩니다. + +혜림이를 위해 **문자열을 입력받으면 단어의 갯수를 출력하는 프로그램**을 작성해 주세요. + +```jsx +**입력** +안녕하세요. 저는 제주대학교 컴퓨터공학전공 혜림입니다. + +**출력** +5 +``` diff --git "a/Challenge/hyebinWoo/032.\353\254\270\354\236\220\354\227\264\353\247\214\353\223\244\352\270\260/solve.js" "b/Challenge/hyebinWoo/032.\353\254\270\354\236\220\354\227\264\353\247\214\353\223\244\352\270\260/solve.js" new file mode 100644 index 0000000..6fa405d --- /dev/null +++ "b/Challenge/hyebinWoo/032.\353\254\270\354\236\220\354\227\264\353\247\214\353\223\244\352\270\260/solve.js" @@ -0,0 +1,17 @@ +// # 문제32 : 문자열 만들기 + +// 취업 준비생인 혜림이는 자기소개서를 쓰고 있습니다. 열심히 자기소개서를 작성하던 도중 혜림이는 자기가 지금까지 단어를 얼마나 적었는지 궁금하게 됩니다. + +// 혜림이를 위해 문자열을 입력받으면 단어의 갯수를 출력하는 프로그램을 작성해 주세요. + +// ```jsx +// **입력** +// 안녕하세요. 저는 제주대학교 컴퓨터공학전공 혜림입니다. + +// **출력** +// 5 +// ``` + +const str = prompt("단어의 갯수를 알려드릴게요").split(" "); + +console.log(str.length); diff --git a/Challenge/hyebinWoo/033.Reverse/README.md b/Challenge/hyebinWoo/033.Reverse/README.md new file mode 100644 index 0000000..7d450ce --- /dev/null +++ b/Challenge/hyebinWoo/033.Reverse/README.md @@ -0,0 +1,13 @@ +# 문제33 : 거꾸로 출력하기 + +한 줄에 여러개의 숫자가 입력되면, 역순으로 그 숫자들을 하나씩 출력하는 프로그램을 작성하시오. + +```jsx +**입출력** +입력 : 1 2 3 4 5 +출력 : 5 4 3 2 1 + +**출력** +입력 : 2 4 6 7 8 +출력 : 8 7 6 4 2 +``` diff --git a/Challenge/hyebinWoo/033.Reverse/solve.js b/Challenge/hyebinWoo/033.Reverse/solve.js new file mode 100644 index 0000000..f0a10f3 --- /dev/null +++ b/Challenge/hyebinWoo/033.Reverse/solve.js @@ -0,0 +1,16 @@ +// # 문제33 : 거꾸로 출력하기 + +// 한 줄에 여러개의 숫자가 입력되면, 역순으로 그 숫자들을 하나씩 출력하는 프로그램을 작성하시오. + +// ```jsx +// **입출력** +// 입력 : 1 2 3 4 5 +// 출력 : 5 4 3 2 1 + +// **출력** +// 입력 : 2 4 6 7 8 +// 출력 : 8 7 6 4 2 +// ``` + +const arr = prompt("숫자를 역순으로 출력해드릴게요!!").split(" "); +console.log(arr.reverse().join(" ")); diff --git a/Challenge/hyebinWoo/034.Sort/README.md b/Challenge/hyebinWoo/034.Sort/README.md new file mode 100644 index 0000000..2d7e610 --- /dev/null +++ b/Challenge/hyebinWoo/034.Sort/README.md @@ -0,0 +1,15 @@ +# 문제34 : sort 구현하기 + +민주는 체육부장으로 체육시간이 되면 반 친구들이 제대로 키 순서대로 모였는지를 확인해야 한다. 그런데 요즘 민주는 그것이 너무 번거롭게 느껴져 한 번에 확인하고 싶어한다. + +민주를 위해 키가 주어지면 순서대로 제대로 섰는지 확인하는 프로그램을 작성해보자. +(키는 공백으로 구분하여 입력됩니다.) + +```jsx +**입출력** +입력 : 176 156 155 165 166 169 +출력 : NO + +입력 : 155 156 165 166 169 176 +출력 : YES +``` diff --git a/Challenge/hyebinWoo/034.Sort/solve.js b/Challenge/hyebinWoo/034.Sort/solve.js new file mode 100644 index 0000000..6b7a260 --- /dev/null +++ b/Challenge/hyebinWoo/034.Sort/solve.js @@ -0,0 +1,24 @@ +// # 문제34 : sort 구현하기 + +// 민주는 체육부장으로 체육시간이 되면 반 친구들이 제대로 키 순서대로 모였는지를 확인해야 한다. 그런데 요즘 민주는 그것이 너무 번거롭게 느껴져 한 번에 확인하고 싶어한다. + +// 민주를 위해 키가 주어지면 순서대로 제대로 섰는지 확인하는 프로그램을 작성해보자. +// (키는 공백으로 구분하여 입력됩니다.) + +// ```jsx +// **입출력** +// 입력 : 176 156 155 165 166 169 +// 출력 : NO + +// 입력 : 155 156 165 166 169 176 +// 출력 : YES +// ``` +const height = prompt("키 순서대로 서야합니다."); +const sort = height + .split(" ") + .sort((a, b) => { + return a - b; + }) + .join(" "); + +height === sort ? console.log("YES") : console.log("NO"); diff --git a/Challenge/hyebinWoo/035.function/README.md b/Challenge/hyebinWoo/035.function/README.md new file mode 100644 index 0000000..5e4b62a --- /dev/null +++ b/Challenge/hyebinWoo/035.function/README.md @@ -0,0 +1,22 @@ +# 문제35 : Factory 함수 사용하기 + +2제곱, 3제곱, 4제곱을 할 수 있는 Factory 함수를 만들려고 합니다. + +에 코드를 작성하여 two함수를 완성하세요. + +```jsx +function one(n){ + function two(){ + //pass + } + return two; +} + +const a = one(2); +const b = one(3); +const c = one(4); + +console.log(a(10)); +console.log(b(10)); +console.log(c(10)); +``` \ No newline at end of file diff --git a/Challenge/hyebinWoo/035.function/solve.js b/Challenge/hyebinWoo/035.function/solve.js new file mode 100644 index 0000000..737faf1 --- /dev/null +++ b/Challenge/hyebinWoo/035.function/solve.js @@ -0,0 +1,38 @@ +/* +# 문제35 : Factory 함수 사용하기 + +2제곱, 3제곱, 4제곱을 할 수 있는 Factory 함수를 만들려고 합니다. + +에 코드를 작성하여 two함수를 완성하세요. + +```jsx +function one(n){ + function two(){ + //pass + } + return two; +} + +const a = one(2); +const b = one(3); +const c = one(4); + +console.log(a(10)); +console.log(b(10)); +console.log(c(10)); +``` +*/ +function one(n) { + function two(squared) { + return Math.pow(squared, n); + } + return two; +} + +const a = one(2); +const b = one(3); +const c = one(4); + +console.log(a(10)); +console.log(b(10)); +console.log(c(10)); diff --git a/Challenge/hyebinWoo/036.Multiplication_Table/README.md b/Challenge/hyebinWoo/036.Multiplication_Table/README.md new file mode 100644 index 0000000..3691735 --- /dev/null +++ b/Challenge/hyebinWoo/036.Multiplication_Table/README.md @@ -0,0 +1,10 @@ +# 문제36 : 구구단 출력하기 + +1~9까지의 숫자 중 하나를 입력하면 그 단의 구구단 결과를 한 줄에 출력하는 프로그램을 작성하세요. + +```jsx +**입출력** + +입력 : 2 +출력 : 2 4 6 8 10 12 14 16 18 +``` \ No newline at end of file diff --git a/Challenge/hyebinWoo/036.Multiplication_Table/solve.js b/Challenge/hyebinWoo/036.Multiplication_Table/solve.js new file mode 100644 index 0000000..b96526f --- /dev/null +++ b/Challenge/hyebinWoo/036.Multiplication_Table/solve.js @@ -0,0 +1,20 @@ +/* +# 문제36 : 구구단 출력하기 + +1~9까지의 숫자 중 하나를 입력하면 그 단의 구구단 결과를 한 줄에 출력하는 프로그램을 작성하세요. + +```jsx +**입출력** + +입력 : 2 +출력 : 2 4 6 8 10 12 14 16 18 +``` +*/ + +const n = prompt("몇단의 구구단을 알고싶나요?"); +result = ""; + +for (let i = 1; i <= 9; i++) { + result += `${n * i} `; +} +console.log(result); diff --git "a/Challenge/hyebinWoo/037.\353\260\230\354\236\245_\354\204\240\352\261\260/README.md" "b/Challenge/hyebinWoo/037.\353\260\230\354\236\245_\354\204\240\352\261\260/README.md" new file mode 100644 index 0000000..18cac02 --- /dev/null +++ "b/Challenge/hyebinWoo/037.\353\260\230\354\236\245_\354\204\240\352\261\260/README.md" @@ -0,0 +1,11 @@ +# 문제37 : 반장 선거 + +새 학기를 맞아 호준이네 반은 반장 선거를 하기로 했습니다. 그런데 표를 하나씩 개표하는 과정이 너무 번거롭게 느껴진 당신은 **학생들이 뽑은 후보들을 입력받으면 뽑힌 학생의 이름과 받은 표 수를 출력하는 프로그램**을 작성하기로 하였습니다. + +```jsx +**입력** +원범 원범 혜원 혜원 혜원 혜원 유진 유진 + +**출력** +혜원(이)가 총 4표로 반장이 되었습니다. +``` \ No newline at end of file diff --git "a/Challenge/hyebinWoo/037.\353\260\230\354\236\245_\354\204\240\352\261\260/solve.js" "b/Challenge/hyebinWoo/037.\353\260\230\354\236\245_\354\204\240\352\261\260/solve.js" new file mode 100644 index 0000000..896cc72 --- /dev/null +++ "b/Challenge/hyebinWoo/037.\353\260\230\354\236\245_\354\204\240\352\261\260/solve.js" @@ -0,0 +1,28 @@ +/* +# 문제37 : 반장 선거 + +새 학기를 맞아 호준이네 반은 반장 선거를 하기로 했습니다. 그런데 표를 하나씩 개표하는 과정이 너무 번거롭게 느껴진 당신은 **학생들이 뽑은 후보들을 입력받으면 뽑힌 학생의 이름과 받은 표 수를 출력하는 프로그램**을 작성하기로 하였습니다. + +```jsx +**입력** +원범 원범 혜원 혜원 혜원 혜원 유진 유진 + +**출력** +혜원(이)가 총 4표로 반장이 되었습니다. +``` +*/ +const member = prompt("반장이 될 이름을 입력해주세요.").split(" "); +let result = {}; +let winner = ""; +for (let index in member) { + let val = member[index]; + result[val] = + result[val] === undefined ? 1 : (result[val] = result[val] + 1); +} + +for (let i = 0; i < Object.keys(result).length; i++) { + if (result[Object.keys(result)[i]] > result[Object.keys(result)[i + 1]]) { + winner = Object.keys(result)[i]; + } +} +console.log(`${winner}(이)가 총 ${result[winner]}표로 반장이 되었습니다.`); diff --git "a/Challenge/hyebinWoo/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/README.md" "b/Challenge/hyebinWoo/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/README.md" new file mode 100644 index 0000000..36a32d4 --- /dev/null +++ "b/Challenge/hyebinWoo/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/README.md" @@ -0,0 +1,13 @@ +# 문제38 : 호준이의 아르바이트 + +호준이는 아르바이트로 영어 학원에서 단어 시험지를 채점하는 일을 하고 있다. 호준이가 일하는 학원은 매번 1위부터 3위까지의 학생에게 상으로 사탕을 준다. 그런데 오늘은 마침 사탕이 다 떨어져서 호준이가 채점을 하고 점수를 보내면, 당신이 아이들의 숫자만큼 사탕을 사러 가기로 했다. + +1위 ~ 3위 학생은 여러명일 수 있고 1~3위 학생 중 중복되는 학생까지 포함하여 사탕을 사기로 한다. +**학생들의 점수를 공백으로 구분하여 입력을 받고 사탕을 받을 학생의 수를 출력하세요.** + +```jsx +**입출력** + +입력 : 97 86 75 66 55 97 85 97 97 95 +출력 : 6 +``` \ No newline at end of file diff --git "a/Challenge/hyebinWoo/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/solve.js" "b/Challenge/hyebinWoo/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/solve.js" new file mode 100644 index 0000000..99e0982 --- /dev/null +++ "b/Challenge/hyebinWoo/038.\355\230\270\354\244\200\354\235\264\354\235\230_\354\225\204\353\245\264\353\260\224\354\235\264\355\212\270/solve.js" @@ -0,0 +1,34 @@ +/* +# 문제38 : 호준이의 아르바이트 + +호준이는 아르바이트로 영어 학원에서 단어 시험지를 채점하는 일을 하고 있다. 호준이가 일하는 학원은 매번 1위부터 3위까지의 학생에게 상으로 사탕을 준다. 그런데 오늘은 마침 사탕이 다 떨어져서 호준이가 채점을 하고 점수를 보내면, 당신이 아이들의 숫자만큼 사탕을 사러 가기로 했다. + +1위 ~ 3위 학생은 여러명일 수 있고 1~3위 학생 중 중복되는 학생까지 포함하여 사탕을 사기로 한다. +**학생들의 점수를 공백으로 구분하여 입력을 받고 사탕을 받을 학생의 수를 출력하세요.** + +```jsx +**입출력** + +입력 : 97 86 75 66 55 97 85 97 97 95 +출력 : 6 +``` +*/ + +//내림차순으로 정렬 +const scores = prompt("점수를 입력해주세요.") + .split(" ") + .sort((a, b) => b - a); + +const set = new Set(scores); +const arr = Array.from(set); +let count = 0; + +for (let i = 0; i < scores.length; i++) { + for (let j = 0; j < 3; j++) { + if (scores[i].includes(arr[j])) { + count += 1; + } + } +} + +console.log(count); diff --git "a/Challenge/hyebinWoo/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" "b/Challenge/hyebinWoo/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" new file mode 100644 index 0000000..3b0af06 --- /dev/null +++ "b/Challenge/hyebinWoo/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/README.md" @@ -0,0 +1,18 @@ +# 문제39 : 오타 수정하기 + +혜원이는 평소 영타가 빠르고 정확한 것을 친구들에게 자랑하고 다녔습니다. 반 친구들이 혜원이의 타자 속도가 빠르다는 것을 모두 알게 되자 혜원이는 모두의 앞에서 타자 실력을 보여주게 됩니다. + +그런데 막상 보여주려니 긴장이 되서 문장의 모든 e를 q로 잘못 친 것을 발견했습니다. +혜원이는 프로그램을 돌려 재빠르게 모든 q를 e로 바꾸는 프로그램을 작성하려고 합니다. + +**문장이 입력되면 모든 q를 e로 바꾸는 프로그램을 작성해 주세요.** + +```jsx +**입출력** + +입력 : querty +출력 : euerty + +입력 : hqllo my namq is hyqwon +출력 : hello my name is hyewon +``` \ No newline at end of file diff --git "a/Challenge/hyebinWoo/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" "b/Challenge/hyebinWoo/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" new file mode 100644 index 0000000..b9b9d6f --- /dev/null +++ "b/Challenge/hyebinWoo/039.\354\230\244\355\203\200_\354\210\230\354\240\225\355\225\230\352\270\260/solve.js" @@ -0,0 +1,22 @@ +/* +# 문제39 : 오타 수정하기 + +혜원이는 평소 영타가 빠르고 정확한 것을 친구들에게 자랑하고 다녔습니다. 반 친구들이 혜원이의 타자 속도가 빠르다는 것을 모두 알게 되자 혜원이는 모두의 앞에서 타자 실력을 보여주게 됩니다. + +그런데 막상 보여주려니 긴장이 되서 문장의 모든 e를 q로 잘못 친 것을 발견했습니다. +혜원이는 프로그램을 돌려 재빠르게 모든 q를 e로 바꾸는 프로그램을 작성하려고 합니다. + +**문장이 입력되면 모든 q를 e로 바꾸는 프로그램을 작성해 주세요.** + +```jsx +**입출력** + +입력 : querty +출력 : euerty + +입력 : hqllo my namq is hyqwon +출력 : hello my name is hyewon +``` +*/ +const str = prompt("q를 e로 수정해드릴게요."); +console.log(str.replaceAll("q", "e")); diff --git "a/Challenge/hyebinWoo/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/README.md" "b/Challenge/hyebinWoo/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/README.md" new file mode 100644 index 0000000..324d030 --- /dev/null +++ "b/Challenge/hyebinWoo/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/README.md" @@ -0,0 +1,22 @@ +# 문제40 : 놀이동산에 가자 + +테마파크에 온 원범이와 친구들은 놀이기구를 타려고 합니다. 모든 놀이기구는 한번에 타는 인원수에는 제한이 없지만 제한 무게를 넘으면 무조건 다음 기구를 타야 합니다. + +**원범이와 친구들이 총 몇 명 탈 수 있는지 알 수 있는 프로그램을 작성해 주세요.** + +첫번째 입력으로 제한 무게가 주어지고 두번째 입력으로는 함께한 친구들의 수 n이 주어집니다. +그 다음 차례대로 탑승할 친구들의 몸무게가 주어집니다. 몸무게는 무작위로 주어집니다. + +```jsx +**입력** +50 +5 +20 +20 +20 +20 +20 + +**출력** +2 +``` \ No newline at end of file diff --git "a/Challenge/hyebinWoo/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/solve.js" "b/Challenge/hyebinWoo/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/solve.js" new file mode 100644 index 0000000..eab5295 --- /dev/null +++ "b/Challenge/hyebinWoo/040.\353\206\200\354\235\264\353\217\231\354\202\260\354\227\220_\352\260\200\354\236\220/solve.js" @@ -0,0 +1,37 @@ +/* +# 문제40 : 놀이동산에 가자 + +테마파크에 온 원범이와 친구들은 놀이기구를 타려고 합니다. 모든 놀이기구는 한번에 타는 인원수에는 제한이 없지만 제한 무게를 넘으면 무조건 다음 기구를 타야 합니다. + +**원범이와 친구들이 총 몇 명 탈 수 있는지 알 수 있는 프로그램을 작성해 주세요.** + +첫번째 입력으로 제한 무게가 주어지고 두번째 입력으로는 함께한 친구들의 수 n이 주어집니다. +그 다음 차례대로 탑승할 친구들의 몸무게가 주어집니다. 몸무게는 무작위로 주어집니다. + +```jsx +**입력** +50 +5 +20 +20 +20 +20 +20 + +**출력** +2 +``` +*/ +const limit = prompt("놀이기구 제한 무게를 입력해주세요."); +const num = prompt("인원수를 입력해주세요."); + +let count = 0; +let weight = 0; + +for (let i = 1; i < num; i++) { + weight += parseInt(prompt("무게를 입력해주세요."), 10); + if (weight <= limit) { + count = i; + } +} +console.log(count); diff --git "a/Challenge/seokahi/016.\353\241\234\352\276\270\352\272\274/solve.js" "b/Challenge/seokahi/016.\353\241\234\352\276\270\352\272\274/solve.js" index 0859045..ff6797c 100644 --- "a/Challenge/seokahi/016.\353\241\234\352\276\270\352\272\274/solve.js" +++ "b/Challenge/seokahi/016.\353\241\234\352\276\270\352\272\274/solve.js" @@ -6,4 +6,11 @@ 입력 : 거꾸로 출력 : 로꾸거 -*/ \ No newline at end of file +*/ + +let input = prompt("입력해주세요."); +let result=""; +for(let i =input.length-1;i>=0;i--) { + result += input[i]; +} +console.log(result); \ No newline at end of file diff --git a/Challenge/seokahi/021.set/README.md b/Challenge/seokahi/021.set/README.md new file mode 100644 index 0000000..255a239 --- /dev/null +++ b/Challenge/seokahi/021.set/README.md @@ -0,0 +1,9 @@ +# 문제21 : set은 어떻게 만드나요? + +다음 중 set을 만드는 방법으로 올바른 것을 모두 고르시오. + +1) var x = {1, 2, 3, 5, 6, 7}; +2) var x = {}; +3) var x = new Set('javascript'); +4) var x = new Set(range(5)); +5) var x = new Set(); \ No newline at end of file diff --git a/Challenge/seokahi/021.set/solve.js b/Challenge/seokahi/021.set/solve.js new file mode 100644 index 0000000..a610022 --- /dev/null +++ b/Challenge/seokahi/021.set/solve.js @@ -0,0 +1,19 @@ +/* +# 문제21 : set은 어떻게 만드나요? + +다음 중 set을 만드는 방법으로 올바른 것을 모두 고르시오. + +1) var x = {1, 2, 3, 5, 6, 7}; +2) var x = {}; +3) var x = new Set('javascript'); +4) var x = new Set(range(5)); +5) var x = new Set(); +*/ + +// 정답 : 3,5 + +var x = new Set('javascript'); +console.log(x,typeof x); + +var x = new Set(); +console.log(x); \ No newline at end of file diff --git a/Challenge/seokahi/022.multiple/README.md b/Challenge/seokahi/022.multiple/README.md new file mode 100644 index 0000000..b4d74cc --- /dev/null +++ b/Challenge/seokahi/022.multiple/README.md @@ -0,0 +1,9 @@ +# 문제22 : 배수인지 확인하기 + +다음 중 변수 i가 6의 배수인지 확인하는 방법으로 올바른 것은? + +1) i / 6 == 0 +2) i % 6 == 0 +3) i & 6 == 0 +4) i | 6 == 0 +5) i // 6 == 0 \ No newline at end of file diff --git a/Challenge/seokahi/022.multiple/solve.js b/Challenge/seokahi/022.multiple/solve.js new file mode 100644 index 0000000..a0286c0 --- /dev/null +++ b/Challenge/seokahi/022.multiple/solve.js @@ -0,0 +1,14 @@ +/* +# 문제22 : 배수인지 확인하기 + +다음 중 변수 i가 6의 배수인지 확인하는 방법으로 올바른 것은? + +1) i / 6 == 0 +2) i % 6 == 0 +3) i & 6 == 0 +4) i | 6 == 0 +5) i // 6 == 0 +*/ + +// 정답 : 2번 + diff --git a/Challenge/seokahi/023.OX/README.md b/Challenge/seokahi/023.OX/README.md new file mode 100644 index 0000000..47e0046 --- /dev/null +++ b/Challenge/seokahi/023.OX/README.md @@ -0,0 +1,3 @@ +# 문제23 : OX문제 + +`console.log(10/3)`의 출력 결과는 **3**이다. \ No newline at end of file diff --git a/Challenge/seokahi/023.OX/solve.js b/Challenge/seokahi/023.OX/solve.js new file mode 100644 index 0000000..b283947 --- /dev/null +++ b/Challenge/seokahi/023.OX/solve.js @@ -0,0 +1,6 @@ +// # 문제23: OX문제 + +// `console.log(10/3)`의 출력 결과는 ** 3 ** 이다. + +// 정답 : x +// console.log(10/3) -> 3.3333333333333335 \ No newline at end of file diff --git a/Challenge/seokahi/024.toUpperCase/README.md b/Challenge/seokahi/024.toUpperCase/README.md new file mode 100644 index 0000000..a5e5142 --- /dev/null +++ b/Challenge/seokahi/024.toUpperCase/README.md @@ -0,0 +1,12 @@ +# 문제24 : 대문자로 바꿔주세요! + +민지는 국제 포럼에서 아르바이트를 하게 되었습니다. 민지는 각 국에서 온 참가자들의 명단을 엑셀로 정리하고 있는데 참가자들 이름이 어떤 이는 전부 소문자, 어떤 이는 전부 대문자로 써져 있는 등 형식이 제각각이었습니다. + +민지를 위해 **이름이 입력되면 전부 대문자로 출력되는 프로그램**을 만들어주세요. + +```jsx +**입출력** + +입력 : mary +출력 : MARY +``` \ No newline at end of file diff --git a/Challenge/seokahi/024.toUpperCase/solve.js b/Challenge/seokahi/024.toUpperCase/solve.js new file mode 100644 index 0000000..d19fc5f --- /dev/null +++ b/Challenge/seokahi/024.toUpperCase/solve.js @@ -0,0 +1,15 @@ +/* +# 문제24 : 대문자로 바꿔주세요! + +민지는 국제 포럼에서 아르바이트를 하게 되었습니다. 민지는 각 국에서 온 참가자들의 명단을 엑셀로 정리하고 있는데 참가자들 이름이 어떤 이는 전부 소문자, 어떤 이는 전부 대문자로 써져 있는 등 형식이 제각각이었습니다. + +민지를 위해 **이름이 입력되면 전부 대문자로 출력되는 프로그램**을 만들어주세요. + +**입출력** + +입력 : mary +출력 : MARY +*/ +const input = prompt("입력해주세요").split(" ").toString(); +const toUpperCase = input.toUpperCase(); +console.log(toUpperCase); \ No newline at end of file diff --git a/Challenge/seokahi/025.circle-area/README.md b/Challenge/seokahi/025.circle-area/README.md new file mode 100644 index 0000000..7e79bae --- /dev/null +++ b/Challenge/seokahi/025.circle-area/README.md @@ -0,0 +1,8 @@ +# 문제 25: 원의 넓이를 구하세요 + +원의 넓이는 `반지름의 길이 x 반지름의 길이 x 3.14`로 구할 수 있습니다. +함수를 사용하여 원의 넓이를 구하는 코드를 작성해봅시다. + +**입력으로 반지름의 길이 정수 n이 주어지면 원의 넓이를 반환하는 함수**를 만들어 주세요. + + diff --git a/Challenge/seokahi/025.circle-area/solve.js b/Challenge/seokahi/025.circle-area/solve.js new file mode 100644 index 0000000..ea188ae --- /dev/null +++ b/Challenge/seokahi/025.circle-area/solve.js @@ -0,0 +1,16 @@ +// # 문제 25: 원의 넓이를 구하세요 + +// 원의 넓이는 `반지름의 길이 x 반지름의 길이 x 3.14`로 구할 수 있습니다. +// 함수를 사용하여 원의 넓이를 구하는 코드를 작성해봅시다. + +// **입력으로 반지름의 길이 정수 n이 주어지면 원의 넓이를 반환하는 함수**를 만들어 주세요. + +function Circle(r) { + return r*r*3.14 +} +const input = parseInt(prompt('반지름 길이를 입력해주세요.').split(" ")) +console.log('원의 넓이', Circle(input)); + + + + \ No newline at end of file diff --git a/Challenge/seokahi/026.planet_2/README.md b/Challenge/seokahi/026.planet_2/README.md new file mode 100644 index 0000000..678e82a --- /dev/null +++ b/Challenge/seokahi/026.planet_2/README.md @@ -0,0 +1,6 @@ +# 문제26 : 행성 문제2 + +우리 태양계를 이루는 행성은 수성, 금성, 지구, 화성, 목성, 토성, 천왕성, 해왕성이 있습니다. +이 행성들의 영어 이름은 Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune입니다. + +행성의 한글 이름을 입력하면 영어 이름을 반환하는 프로그램을 만들어 주세요. \ No newline at end of file diff --git a/Challenge/seokahi/026.planet_2/solve.js b/Challenge/seokahi/026.planet_2/solve.js new file mode 100644 index 0000000..2714e66 --- /dev/null +++ b/Challenge/seokahi/026.planet_2/solve.js @@ -0,0 +1,18 @@ +// 문제26 : 행성 문제2 + +// 우리 태양계를 이루는 행성은 수성, 금성, 지구, 화성, 목성, 토성, 천왕성, 해왕성이 있습니다. +// 이 행성들의 영어 이름은 Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune입니다. + +const planet = { + "수성":"Mercury", + "금성":"Venus", + "지구":"Earth", + "화성":"Mars", + "목성":"Jupiter", + "토성":"Saturn", + "천왕성":"Uranus", + "해왕성":"Neptune" +} + +const inputPlanet = prompt('행성 이름을 입력해주세요.').split(" ").toString(); +console.log(planet[inputPlanet]); \ No newline at end of file diff --git a/Challenge/seokahi/027.object/README.md b/Challenge/seokahi/027.object/README.md new file mode 100644 index 0000000..9b83945 --- /dev/null +++ b/Challenge/seokahi/027.object/README.md @@ -0,0 +1,14 @@ +# 문제27 : 객체 만들기 + +첫번째 입력에서는 학생의 이름이 공백으로 구분되어 입력되고, 두번째에는 그 학생의 수학 점수가 공백으로 구분되어 주어집니다. + +두 개를 합쳐 **학생의 이름이 key**이고 **value가 수학 점수**인 객체를 출력해주세요. + +```jsx +**입력** +Yujin Hyewon +70 100 + +**출력** +{'Yujin': 70, 'Hyewon': 100} +``` \ No newline at end of file diff --git a/Challenge/seokahi/027.object/solve.js b/Challenge/seokahi/027.object/solve.js new file mode 100644 index 0000000..551a500 --- /dev/null +++ b/Challenge/seokahi/027.object/solve.js @@ -0,0 +1,20 @@ +// # 문제27 : 객체 만들기 + +// 첫번째 입력에서는 학생의 이름이 공백으로 구분되어 입력되고, 두번째에는 그 학생의 수학 점수가 공백으로 구분되어 주어집니다. + +// 두 개를 합쳐 **학생의 이름이 key**이고 **value가 수학 점수**인 객체를 출력해주세요. + + +// **입력** +// Yujin Hyewon +// 70 100 + +// **출력** +// {'Yujin': 70, 'Hyewon': 100} +const object_user = {}; +const name = prompt('이름을 입력해주세요').split(" ") +const score = prompt('점수를 입력해주세요').split(" ") + +for(let i=0;i<2;i++) { + object_user[name[i]] = score[i] +} \ No newline at end of file diff --git a/Challenge/seokahi/028.2-gram/README.md b/Challenge/seokahi/028.2-gram/README.md new file mode 100644 index 0000000..3a0dfe1 --- /dev/null +++ b/Challenge/seokahi/028.2-gram/README.md @@ -0,0 +1,23 @@ +# 문제28 : 2-gram + +**2-gram**이란 문자열에서 2개의 연속된 요소를 출력하는 방법입니다. + +예를 들어 'Javascript'를 2-gram으로 반복해 본다면 다음과 같은 결과가 나옵니다. + +```jsx +**입력** +Javascript + +**출력** +J a +a v +v a +a s +s c +c r +r i +i p +p t +``` + +입력으로 문자열이 주어지면 **2-gram**으로 출력하는 프로그램을 작성해 주세요. \ No newline at end of file diff --git a/Challenge/seokahi/028.2-gram/solve.js b/Challenge/seokahi/028.2-gram/solve.js new file mode 100644 index 0000000..159563d --- /dev/null +++ b/Challenge/seokahi/028.2-gram/solve.js @@ -0,0 +1,27 @@ +// # 문제28 : 2-gram + +// **2-gram**이란 문자열에서 2개의 연속된 요소를 출력하는 방법입니다. + +// 예를 들어 'Javascript'를 2-gram으로 반복해 본다면 다음과 같은 결과가 나옵니다. + + +// **입력** +// Javascript + +// **출력** +// J a +// a v +// v a +// a s +// s c +// c r +// r i +// i p +// p t + + +// 입력으로 문자열이 주어지면 **2-gram**으로 출력하는 프로그램을 작성해 주세요. +const input =prompt('숫자를 입력해주세요.').split(" ").toString(); +for(let i=0;i result[j + 1]) { + //빈칸을 채워주세요. + } + } + } + return result; +} + +const items = prompt('입력해주세요.').split(' ').map((n) => { + return parseInt(n, 10); +}); + +console.log(bubble(items)); +``` diff --git "a/Problems/050.\353\262\204\353\270\224\354\240\225\353\240\254_\352\265\254\355\230\204\355\225\230\352\270\260/solve.js" "b/Problems/050.\353\262\204\353\270\224\354\240\225\353\240\254_\352\265\254\355\230\204\355\225\230\352\270\260/solve.js" new file mode 100644 index 0000000..e24a550 --- /dev/null +++ "b/Problems/050.\353\262\204\353\270\224\354\240\225\353\240\254_\352\265\254\355\230\204\355\225\230\352\270\260/solve.js" @@ -0,0 +1,29 @@ +/* +# 문제50 : 버블정렬 구현하기 + +버블정렬은 두 인접한 원소를 검사하여 정렬하는 방법을 말합니다. 시간 복잡도는 느리지만 코드가 단순하기 때문에 자주 사용됩니다. + + +아래 코드의 빈 칸을 채워 버블 정렬을 완성해 봅시다. + +```jsx +function bubble(arr) { + let result = arr.slice(); + + for (let i = 0; i < result.length - 1; i++) { + for (//빈칸을 채워주세요.) { + if (result[j] > result[j + 1]) { + //빈칸을 채워주세요. + } + } + } + return result; + } + + const items = prompt('입력해주세요.').split(' ').map((n) => { + return parseInt(n, 10); + }); + + console.log(bubble(items)); +``` +*/ diff --git a/Problems/051.merge_sort/README.md b/Problems/051.merge_sort/README.md new file mode 100644 index 0000000..6b1c81b --- /dev/null +++ b/Problems/051.merge_sort/README.md @@ -0,0 +1,50 @@ +# 문제51 : merge sort를 만들어보자 + +병합정렬(merge sort)은 대표적인 정렬 알고리즘 중 하나로 다음과 같이 동작합니다. + +> 1. 리스트의 길이가 0 또는 1이면 이미 정렬된 것으로 본다. 그렇지 않은 경우에는 +> 2. 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. +> 3. 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다. +> 4. 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. + +출처 : 위키피디아 + +다음 코드의 빈칸을 채워 병합정렬을 완성해 봅시다. + +```jsx +function mergeSort(arr){ + if (arr.length <= 1){ + return arr; + } + + const mid = Math.floor(arr.length / 2); + const left = arr.slice(0,mid); + const right = arr.slice(mid); + + return merge(mergeSort(left), mergeSort(right)); +} + +function merge(left, right){ + let result = []; + + while (/*빈칸을 채워주세요*/ && /*빈칸을 채워주세요*/){ + if (/*빈칸을 채워주세요*/){ + result.push(left.shift()); + } else { + result.push(right.shift()); + } + } + while (left.length) { + /*빈칸을 채워주세요*/ + } + while (right.length) { + /*빈칸을 채워주세요*/ + } + + return result; +} + +const array = prompt('배열을 입력하세요').split(' ').map(n => parseInt(n, 10)); + +console.log(mergeSort(array)); +``` diff --git a/Problems/051.merge_sort/solve.js b/Problems/051.merge_sort/solve.js new file mode 100644 index 0000000..63a1b04 --- /dev/null +++ b/Problems/051.merge_sort/solve.js @@ -0,0 +1,51 @@ +/* +# 문제51 : merge sort를 만들어보자 + +병합정렬(merge sort)은 대표적인 정렬 알고리즘 중 하나로 다음과 같이 동작합니다. + +> 1. 리스트의 길이가 0 또는 1이면 이미 정렬된 것으로 본다. 그렇지 않은 경우에는 +> 2. 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. +> 3. 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다. +> 4. 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. + +출처 : 위키피디아 + +다음 코드의 빈칸을 채워 병합정렬을 완성해 봅시다. + +```jsx +function mergeSort(arr){ + if (arr.length <= 1){ + return arr; + } + + const mid = Math.floor(arr.length / 2); + const left = arr.slice(0,mid); + const right = arr.slice(mid); + + return merge(mergeSort(left), mergeSort(right)); +} + +function merge(left, right){ + let result = []; + + while (//빈칸을 채워주세요 && 빈칸을 채워주세요){ + if (//빈칸을 채워주세요){ + result.push(left.shift()); + } else { + result.push(right.shift()); + } + } + while (left.length) { + //빈칸을 채워주세요 + } + while (right.length) { + //빈칸을 채워주세요 + } + + return result; + } + + const array = prompt('배열을 입력하세요').split(' ').map(n => parseInt(n, 10)); + + console.log(mergeSort(array)); + ``` */ diff --git a/Problems/052.quick_sort/README.md b/Problems/052.quick_sort/README.md new file mode 100644 index 0000000..83937a5 --- /dev/null +++ b/Problems/052.quick_sort/README.md @@ -0,0 +1,28 @@ +# 문제52 : quick sort + +다음 빈 칸을 채워 퀵 정렬을 완성해주세요. + +```jsx +function quickSort(arr){ + if (arr.length <= 1){ + return arr; + } + + const pivot = arr[0]; + const left = []; + const right = []; + + for (let i=1; i parseInt(n, 10)); + +console.log(quickSort(array)); +``` diff --git a/Problems/052.quick_sort/solve.js b/Problems/052.quick_sort/solve.js new file mode 100644 index 0000000..990f8b7 --- /dev/null +++ b/Problems/052.quick_sort/solve.js @@ -0,0 +1,30 @@ +/* +# 문제52 : quick sort + +다음 빈 칸을 채워 퀵 정렬을 완성해주세요. + +```jsx +function quickSort(arr){ + if (arr.length <= 1){ + return arr; + } + + const pivot = arr[0]; + const left = []; + const right = []; + + for (let i=1; i parseInt(n, 10)); + +console.log(quickSort(array)); +``` +*/ diff --git "a/Problems/053.\352\264\204\355\230\270_\353\254\270\354\236\220\354\227\264/README.md" "b/Problems/053.\352\264\204\355\230\270_\353\254\270\354\236\220\354\227\264/README.md" new file mode 100644 index 0000000..22b8296 --- /dev/null +++ "b/Problems/053.\352\264\204\355\230\270_\353\254\270\354\236\220\354\227\264/README.md" @@ -0,0 +1,8 @@ +# 문제53 : 괄호 문자열 + +괄호 문자열이란 괄호 기호인 '{', '}', '[', ']', '(', ')' 와 같은 것을 말한다. 그중 괄호의 모양이 바르게 구성된 문자열을 **바른 문자열**, 그렇지 않은 문자열을 **바르지 않은 문자열**이라 부르도록 하자. + +(())와 같은 문자열은 바른 문자열이지만 ()()) 와 같은 문자열은 바르지 않은 문자열이다. +(해당 문제에서는 소괄호만 판별하지만, 중괄호와 대괄호까지 판별해 보세요.) + +**입력으로 주어진 괄호 문자열이 바른 문자열인지 바르지 않은 문자열인지 "YES"와 "NO"로 구분된 문자열을 출력해보자.** diff --git "a/Problems/053.\352\264\204\355\230\270_\353\254\270\354\236\220\354\227\264/solve.js" "b/Problems/053.\352\264\204\355\230\270_\353\254\270\354\236\220\354\227\264/solve.js" new file mode 100644 index 0000000..a5683c5 --- /dev/null +++ "b/Problems/053.\352\264\204\355\230\270_\353\254\270\354\236\220\354\227\264/solve.js" @@ -0,0 +1,10 @@ +/* +# 문제53 : 괄호 문자열 + +괄호 문자열이란 괄호 기호인 '{', '}', '[', ']', '(', ')' 와 같은 것을 말한다. 그중 괄호의 모양이 바르게 구성된 문자열을 **바른 문자열**, 그렇지 않은 문자열을 **바르지 않은 문자열**이라 부르도록 하자. + +(())와 같은 문자열은 바른 문자열이지만 ()()) 와 같은 문자열은 바르지 않은 문자열이다. +(해당 문제에서는 소괄호만 판별하지만, 중괄호와 대괄호까지 판별해 보세요.) + +**입력으로 주어진 괄호 문자열이 바른 문자열인지 바르지 않은 문자열인지 "YES"와 "NO"로 구분된 문자열을 출력해보자.** +*/ diff --git "a/Problems/054.\354\227\260\354\206\215\353\220\230\353\212\224_\354\210\230/README.md" "b/Problems/054.\354\227\260\354\206\215\353\220\230\353\212\224_\354\210\230/README.md" new file mode 100644 index 0000000..7f0af59 --- /dev/null +++ "b/Problems/054.\354\227\260\354\206\215\353\220\230\353\212\224_\354\210\230/README.md" @@ -0,0 +1,21 @@ +# 문제54 : 연속되는 수 + +은주는 놀이공원 아르바이트를 하고 있다. 은주가 일하는 놀이공원에서는 현재 놀이공원 곳곳에 숨겨진 숫자 스탬프를 모아 오면 선물을 주는 이벤트를 하고 있다. 숫자 스탬프는 매일 그 수와 스탬프에 적힌 숫자가 바뀌지만 그 숫자는 항상 연속된다. +그런데 요즘 다른 날에 찍은 스탬프를 가지고 와 선물을 달라고 하는 손님이 늘었다. + +스탬프에 적힌 숫자가 공백으로 구분되어 주어지면 이 숫자가 연속수인지 아닌지 "YES"와 "NO"로 판별하는 프로그램을 작성하시오 + +```jsx +입력1 +1 2 3 4 5 + +출력1 +YES + + +입력2 +1 4 2 6 3 + +출력2 +NO +``` diff --git "a/Problems/054.\354\227\260\354\206\215\353\220\230\353\212\224_\354\210\230/solve.js" "b/Problems/054.\354\227\260\354\206\215\353\220\230\353\212\224_\354\210\230/solve.js" new file mode 100644 index 0000000..58e4b02 --- /dev/null +++ "b/Problems/054.\354\227\260\354\206\215\353\220\230\353\212\224_\354\210\230/solve.js" @@ -0,0 +1,23 @@ +/* +# 문제54 : 연속되는 수 + +은주는 놀이공원 아르바이트를 하고 있다. 은주가 일하는 놀이공원에서는 현재 놀이공원 곳곳에 숨겨진 숫자 스탬프를 모아 오면 선물을 주는 이벤트를 하고 있다. 숫자 스탬프는 매일 그 수와 스탬프에 적힌 숫자가 바뀌지만 그 숫자는 항상 연속된다. +그런데 요즘 다른 날에 찍은 스탬프를 가지고 와 선물을 달라고 하는 손님이 늘었다. + +스탬프에 적힌 숫자가 공백으로 구분되어 주어지면 이 숫자가 연속수인지 아닌지 "YES"와 "NO"로 판별하는 프로그램을 작성하시오 + +```jsx +입력1 +1 2 3 4 5 + +출력1 +YES + + +입력2 +1 4 2 6 3 + +출력2 +NO +``` +*/ diff --git "a/Problems/055.\355\225\230\353\205\270\354\235\264\354\235\230_\355\203\221/README.md" "b/Problems/055.\355\225\230\353\205\270\354\235\264\354\235\230_\355\203\221/README.md" new file mode 100644 index 0000000..66e27e4 --- /dev/null +++ "b/Problems/055.\355\225\230\353\205\270\354\235\264\354\235\230_\355\203\221/README.md" @@ -0,0 +1,35 @@ +# 문제55 : 하노이의 탑 + +하노이의 탑은 프랑스 수학자 에두아르드가 처음으로 발표한 게임입니다. 하노이의 탑은 A, B, C 3개의 기둥과 기둥에 꽂을 수 있는 N 개의 원판으로 이루어져 있습니다. 이 게임에서는 다음의 규칙을 만족해야 합니다. + +> 1. 처음에 모든 원판은 A 기둥에 꽂혀 있다. +> 2. 모든 원판의 지름은 다르다. +> 3. 이 원반은 세 개의 기둥 중 하나에 반드시 꽂혀야 한다. +> 4. 작은 원반 위에 큰 원반을 놓을 수 없다. +> 5. 한 번에 하나의 원판(가장 위에 있는 원판)만을 옮길 수 있다. + +이 규칙을 만족하며 A 기둥에 있는 원반 N 개를 모두 C 원반으로 옮기고 싶습니다. +모든 원반을 옮기기 위해 실행되어야 할 최소 원반 이동 횟수를 계산하는 프로그램을 완성해 주세요. + +```jsx +const route = []; + +function hanoi(num, start, end, temp) { + //원판이 한 개일 때에는 바로 옮기면 됩니다. + if (num === 1) { + route.push([start, end]); + return NaN; + } + + //원반이 n-1개를 경유기둥으로 옮기고 + hanoi(/*내용을 채워주세요.*/); + //가장 큰 원반은 목표기둥으로 + route.push(/*내용을 채워주세요.*/); + //경유기둥과 시작기둥을 바꿉니다. + hanoi(/*내용을 채워주세요.*/); +} + +hanoi(3, "A", "B", "C"); +console.log(route); +console.log(route.length); +``` diff --git "a/Problems/055.\355\225\230\353\205\270\354\235\264\354\235\230_\355\203\221/solve.js" "b/Problems/055.\355\225\230\353\205\270\354\235\264\354\235\230_\355\203\221/solve.js" new file mode 100644 index 0000000..f12e330 --- /dev/null +++ "b/Problems/055.\355\225\230\353\205\270\354\235\264\354\235\230_\355\203\221/solve.js" @@ -0,0 +1,38 @@ +/* +# 문제55 : 하노이의 탑 + +하노이의 탑은 프랑스 수학자 에두아르드가 처음으로 발표한 게임입니다. 하노이의 탑은 A, B, C 3개의 기둥과 기둥에 꽂을 수 있는 N 개의 원판으로 이루어져 있습니다. 이 게임에서는 다음의 규칙을 만족해야 합니다. + +> 1. 처음에 모든 원판은 A 기둥에 꽂혀 있다. +> 2. 모든 원판의 지름은 다르다. +> 3. 이 원반은 세 개의 기둥 중 하나에 반드시 꽂혀야 한다. +> 4. 작은 원반 위에 큰 원반을 놓을 수 없다. +> 5. 한 번에 하나의 원판(가장 위에 있는 원판)만을 옮길 수 있다. + + +이 규칙을 만족하며 A 기둥에 있는 원반 N 개를 모두 C 원반으로 옮기고 싶습니다. +모든 원반을 옮기기 위해 실행되어야 할 최소 원반 이동 횟수를 계산하는 프로그램을 완성해 주세요. + +```jsx +const route = []; + +function hanoi(num, start, end, temp){ + //원판이 한 개일 때에는 바로 옮기면 됩니다. + if (num === 1) { + route.push([start, end]); + return NaN; + } + + //원반이 n-1개를 경유기둥으로 옮기고 + hanoi(//내용을 채워주세요.); + //가장 큰 원반은 목표기둥으로 + route.push(//내용을 채워주세요.); + //경유기둥과 시작기둥을 바꿉니다. + hanoi(//내용을 채워주세요.); +} + +hanoi(3, 'A', 'B', 'C'); +console.log(route); +console.log(route.length); +``` +*/