안녕하세요, js 코테를 공부하는 주인장입니다.
지난 시리즈 포스팅에 이어서 코딩 기초 트레이닝 코스 문제들을 정리하는 2탄입니다.
사실 문제 이름으로 h3 태그를 달아두어 사람들이 쉽게 찾을 수 있도록 작성하였는데,
태그가 30개 이상 넘어가면 오른쪽에 태그가 넘어가서 안보이더라고요...
그래서 앞으로 30문제씩 잘라서 포스팅해보려고 합니다!
function solution(n, k) {
var answer = [];
for(let i=1; i<=n;i++){
for(let j=1; j<=(n/k) ; j++){
answer[j]=j*k
}
}
// 테케해보니까 인덱스 맨 앞에 null값이 다 들어가있어서
// 배열의 첫 번째 원소를 지워 줌.
let ans = answer.shift();
return answer;
}
소현아 js는 자바가 아니야.... 어휴
문제 : 단어가 공백 한 개로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
코드 : ㅎㅎ 이정도는 1초컷
function solution(my_string) {
var answer = [];
answer=my_string.split(" ");
return answer;
}
function solution(my_string, index_list) {
var answer = '';
let ans = my_string.split("");
for(let i=0;i<index_list.length;i++){
answer+=ans[index_list[i]];
}
return answer;
}
문제: 1부터 6까지 숫자가 적힌 주사위가 두 개 있습니다. 두 주사위를 굴렸을 때 나온 숫자를 각각 a, b라고 했을 때 얻는 점수는 다음과 같습니다.
a와 b가 모두 홀수라면 a2 + b2 점을 얻습니다.
a와 b 중 하나만 홀수라면 2 × (a + b) 점을 얻습니다.
a와 b 모두 홀수가 아니라면 |a - b| 점을 얻습니다.
두 정수 a와 b가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.
풀이 :
(1) 우선 절대값 함수 Math.abs();
(2) a,b 둘중 하나만 홀수라면을 어떻게 줄일까 ... 고민하다가 or을 썼는데 and로 인식됨 ;;
이걸 찾아봣는데 둘의 홀짝성이 다른 것으로 구분하면 더 쉽게 줄일 수 있더라
바로
else if (a % 2 !== b % 2){ // a와 b의 홀짝성이 다를 경우
answer = 2 * (a + b);
}
위와 같이 작성하면 더 쉽게 조건문을 줄일 수 있다. 나머지 값이 다른 것으로 나누다니 ㄹㅇ ... 저런 생각은 어떻게 하는 걸까 ㅜㅜ
function solution(a, b) {
var answer = 0;
if(a%2!==0 && b%2!=0){
answer=a**2+b**2;
}
else if(a%2==0 && b%2!=0){
answer=2*(a+b);
}
else if(a%2!=0 && b%2==0){
answer=2*(a+b);
}
else if(a%2==0 && b%2==0){
answer=Math.abs(a-b);
}
return answer;
}
문제: 문자열 배열 strArr가 주어집니다. 모든 원소가 알파벳으로만 이루어져 있을 때, 배열에서 홀수번째 인덱스의 문자열은 모든 문자를 대문자로, 짝수번째 인덱스의 문자열은 모든 문자를 소문자로 바꿔서 반환하는 solution 함수를 완성해 주세요.
코드: 배열에 원소 넣는거는 push() 로 넣어주어야 한다!! 문자열이랑 헷갈리지 말기
function solution(strArr) {
var answer = [];
for(let i=0; i<strArr.length;i++){
if(i%2!=0){
answer.push(strArr[i].toUpperCase());
}
else {
answer.push(strArr[i].toLowerCase());
}
}
return answer;
}
function solution(arr) {
var answer = [];
for(let i=0; i<arr.length;i++){
for(let j=0; j<arr[i]; j++){
answer.push(arr[i]);
}
}
return answer;
}
function solution(num_list) {
var answer = [];
num_list.sort((a,b)=>a-b);
answer=num_list.slice(5);
return answer;
}
- js에서 오름차순!!
nums.sort((a, b) => a - b);- 내림차순!!
nums.sort((a, b) => b - a);
function solution(my_string, target) {
return Number(my_string.includes(target));
}
주어진 문자열에 다른 문자열이 포함되어 있는지 여부를 확인합니다.
" include()"함수
- 예시 주어진 문자열에 @가 포함되어있는지 확인하는 과정
let email = 'admin@example.com';
console.log(email.includes('@'));
function solution(arr1, arr2) {
var answer = 0;
let a=arr1.length;
let b=arr2.length;
let sum1=0;
let sum2=0;
if(a>b) answer=1;
else if(a<b) answer=-1;
else if(a==b){
for(let i=0; i<arr1.length;i++){
sum1+=arr1[i];
}
for(let j=0; j<arr2.length;j++){
sum2+=arr2[j];
}
if(sum1>sum2) answer=1;
else if(sum1<sum2) answer=-1;
else answer=0;
}
return answer;
}
function solution(myString, pat) {
var answer = 0;
myString = myString.split('A').join('temp');
myString = myString.split('B').join('A');
myString = myString.split('temp').join('B');
return Number(myString.includes(pat));
}
myString의 "A"를 "B"로, "B"를 "A"로 바꾸는 걸 어떻게 해야할지 고민하다가.
str = str.split('A').join('temp'); // 모든 A를 임시 문자열로 바꿉니다.
str = str.split('B').join('A'); // 모든 B를 A로 바꿉니다.
str = str.split('temp').join('B'); // 임시 문자열을 모두 B로 바꿉니다
위의 방법을 알게 되었고 적용하였다. 아래에 다른 사람들의 풀이가 궁금해졌다.
function solution(num_list) {
var answer = [];
num_list.sort((a,b)=>a-b);
answer=num_list.slice(0,5);
return answer;
}
문제 단어가 공백 한 개 이상으로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
코드:
function solution(my_string) {
var answer = my_string.split(" ");
let str=[];
for(let i=0;i<answer.length;i++){
if(answer[i] !==""){
str.push(answer[i]);
}
}
return str;
}
function solution(myString, pat) {
var answer = 0;
myString=myString.toLowerCase();
pat=pat.toLowerCase();
if(myString.includes(pat)){answer=1;}
return answer;
}
문제: 정수 배열 arr과 delete_list가 있습니다. arr의 원소 중 delete_list의 원소를 모두 삭제하고 남은 원소들은 기존의 arr에 있던 순서를 유지한 배열을 return 하는 solution 함수를 작성해 주세요.
코드: 내가 푼 코드이다. for문을 통해 arr 배열의 각 원소를 검사하며, 해당 원소가 delete_list에 포함되어 있지 않은 경우 answer 배열에 추가한다.
function solution(arr, delete_list) {
var answer = [];
for(let i=0; i<arr.length;i++){
if(!delete_list.includes(arr[i])){
answer.push(arr[i]);
}
}
return answer;
}
function solution(arr, delete_list) {
var answer = arr.filter(item => !delete_list.includes(item));
return answer;
}
function solution(my_strings, parts) {
var answer = '';
for(let i=0; i<my_strings.length;i++){
let s = parts[i][0];
let e = parts[i][1];
answer+=my_strings[i].substring(s,e+1);
}
return answer;
}
function solution(n_str) {
var answer = '';
answer=parseInt(n_str).toString();
return answer;
}
문제: 두 정수 a, d와 길이가 n인 boolean 배열 included가 주어집니다. 첫째항이 a, 공차가 d인 등차수열에서 included[i]가 i + 1항을 의미할 때, 이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 return 하는 solution 함수를 작성해 주세요.
코드: 딱히 어려운건 없음 넘어감
function solution(a, d, included) {
var answer = 0;
for(let i=0; i<included.length;i++){
if(included[i]==true){
answer+=a+(i)*d;
}
}
return answer;
}
function solution(a, b, c) {
var answer = 0;
if (a != b && b != c && a != c) {
answer = a + b + c;
} else if (a == b && b == c) {
answer = (a + b + c) * (a ** 2 + b ** 2 + c ** 2) * (a ** 3 + b ** 3 + c ** 3);
} else {
answer = (a + b + c) * (a ** 2 + b ** 2 + c ** 2);
}
return answer;
}
function solution(number) {
var answer = 0;
for (let i = 0; i < number.length; i++) {
answer += parseInt(number[i], 10);
}
return answer % 9;
}
function solution(arr, idx) {
var answer = 0;
for(let i=idx ;i <arr.length;i++){
if(arr[i]==1){
answer=i;
break;
}
else{answer=-1;}
}
return answer;
}
morse = {
'.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',
'--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',
'--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',
'...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
'-.--':'y','--..':'z'
}
function solution(letter) {
var answer = '';
//javascript 객체 사용
var morse = {
'.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',
'--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',
'--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',
'...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
'-.--':'y','--..':'z'
};
var morseLetters = letter.split(' ');
for(var i=0; i<morseLetters.length; i++){
answer += morse[morseLetters[i]];
}
return answer;
}
function solution(n) {
var answer = [];
while(n != 1){
answer.push(n);
if(n % 2 == 0){
n = n / 2;
} else {
n = 3 * n + 1;
}
}
answer.push(1);
return answer;
}
function solution(date1, date2) {
var answer = 0;
for(let i=0; i<3;i++){
if( date1[0]<date2[0]){answer=1;}
else if (date1[0]==date2[0] && date1[1]<date2[1]){answer=1;}
else if (date1[0]==date2[0] && date1[1]==date2[1] && date1[2]<date2[2]){answer=1;}
}
return answer;
}
function solution(order) {
var answer = 0;
for(let i=0; i<order.length;i++){
if(order[i] == "iceamericano" || order[i] == "americanoice" ||
order[i] == "hotamericano" || order[i] == "americanohot" ||
order[i] == "americano" || order[i] == "anything") {
answer += 4500;
} else if(order[i] == "icecafelatte" || order[i] == "cafelatteice" ||
order[i] == "hotcafelatte" || order[i] == "cafelattehot" ||
order[i] == "cafelatte") {
answer += 5000;
}
}
return answer;
}
글 잘 봤습니다, 많은 도움이 되었습니다.