* JS에서 parseInt()는 문자를 숫자로 변환해주는 함수 ! > 까먹었다리 ㅋ.ㅋ ..
* break와 continue의 차이가 잠깐 헷갈려서 검색 !
https://likedev.tistory.com/entry/Javascript-%EB%B0%98%EB%B3%B5%EB%AC%B8-break-continue-%EC%B0%A8%EC%9D%B4
[Javascript] 반복문 break, continue 차이
break와 continue는 모두 반복문에서 사용되는 제어문입니다. 하지만 두 문장은 서로 다른 역할을 수행합니다. break 문은 반복문을 즉시 탈출하고 반복문 바로 뒤의 문장으로 제어를 이동시킵니다.
likedev.tistory.com
* 배수 판별기 문제에서
나는
function solution(num) {
var answer = [];
while(num >= 2) {
if (num % 2== 0) {
answer.push("2의 배수입니다.");
num /= 2;
}
else if (num % 3== 0) {
answer.push("3의 배수입니다.");
num /= 3;
}
if (num % 5== 0) {
answer.push("5의 배수입니다.");
num /= 5;
}
if (num % 7== 0) {
answer.push("7의 배수입니다.");
num /= 7;
}
}
answer = [...new Set(answer)];
return answer.join("\n");
}
이렇게 코드를 짰고,
여기에서 중복제거에 대한 참고링크는 아래와 같다.
https://sisiblog.tistory.com/313
[javascript] 자바스크립트 배열 중복 제거
참고: https://www.javascripttutorial.net/array/javascript-remove-duplicates-from-array/ 이 포스트에서는 JavaScript의 배열에서 중복된 항목을 제거하는 방법을 알아보겠습니다. 1. Set를 사용하여 배열에서 중복 제거
sisiblog.tistory.com
https://blacklobster.tistory.com/14
간단간단! 자바스크립트(JS) 문자열, 배열 중복값 제거하기
이전 글에서는 자바스크립트(JavaScript)의 문자열과 배열의 중복값 찾기를 알아보았는데요. 이번에는 중복값을 제거하는 방법에 대해 알아보겠습니다. 즉 최종적으로 제거한 값만 남는 것이죠.
blacklobster.tistory.com
그런데 코드가 돌아가는 시간이 너무 오래걸려 코드를 수정해야했다.
자바스크립트에서는 문자열과 변수를 같이 사용할때 백틱(`)과 ${}를 쓴다는것을 알게 되었다 !
https://novlog.tistory.com/entry/JavaScript-%ED%85%9C%ED%94%8C%EB%A6%BF-%EB%A6%AC%ED%84%B0%EB%9F%B4-%EB%B0%B1%ED%8B%B1-%EB%8B%AC%EB%9F%AC-%EB%AC%B8%EB%B2%95-%EC%82%AC%EC%9A%A9%EB%B2%95
[JavaScript] 템플릿 리터럴 : 백틱(``) 달러(${}) 문법 사용법
*개인적인 공부 내용을 기록하는 용도로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다. *지속적으로 내용을 수정해 나갈 예정입니다. 혹여나 잘못된 내용이 있다면 언제든지 지적
novlog.tistory.com
요렇게 말이다 !
그래서 최종 코드는
function solution(num) {
const factors = [2,3,5,7];
const answer = [];
for (const factor of factors) {
if (num % factor == 0) {
answer.push(`${factor}의 배수입니다.`);
num /= factor;
}
}
return answer.join("\n");
}
이렇게 짜면 된다 ,,!
* 자바스크립트에서 배열의 인덱스를 알고싶을때는 arr.indexOf("웩") 이런식으로 indexOf함수를 쓰면 된다 !
* 마천루 문제에서는
음 .....
처음에
function solution(input) {
var answer = "";
for (var i = 1; i <= input; i++) {
if(i < 5) {
answer += "*".repeat(i) + "\n";
}
else {
answer += "*".repeat(5) + "\n";
}
}
return answer;
}
이렇게 코드를 짰는데 돌아가지 않았다 ,,
그래서
function solution(input) {
var answer = [];
for (var i = 1; i <= input; i++) {
if(i < 5) {
answer.push("*".repeat(i));
}
else {
answer.push("*".repeat(5));
}
}
return answer.join("\n");
}
이렇게 코드를 수정했더니 테스트를 통과하였다 ,,
뭐가 문제였을까 .. 완조니 OMG
그리고 자바스크립트에서는 "*" * 5 이런식으로 사용하지 않고 repeat()함수를 사용한다는것을 알았다 !
더 간결하게는
function solution(input) {
var answer = [];
for (var i=1; i<=input; i++) {
var count = Math.min(i,5);
answer.push("*".repeat(count));
}
return answer.join("\n");
}
이렇게 코드를 짤 수 있다 !
굉장히 센스가 있게 짠 코드라고 생각한다 !
* 그리고 자바스크립트에서는 str[-1] 같이 마지막 인덱스의 값을 가지고 오는 동작이 실행되지 않는다 !
* 커피전문점 문제에서는
function solution(input) {
var count = 0;
for(var i=0; i<input.length; i++) {
if (input[i].includes("아메리카노")) {
count += 4100;
}
else if (input[i].includes("카페라떼")) {
count += 4600;
}
else if (input[i].includes("카라멜마끼아또")) {
count += 5100;
}
}
return count;
}
이렇게 코드를 짰는데,
const menu = {
"아메리카노" : 4100,
"카페라떼" : 4600,
"카라멜마끼아또" : 5100
};
function solution(input) {
count = 0;
for (i=0; i< input.length; i++) {
const drink = input[i];
count += menu[drink];
}
return count;
}
이렇게 코드를 짜주는 방법도 있다 !
* 반쪽짜리 피라미드 문제에서는
function solution(num) {
star = [];
for (var i = num-1; i >= 0; i--) {
star.push(" ".repeat(i));
star.push("*".repeat(num-i));
star.join("\n");
}
return star;
}
이렇게 했을때 원하는 결과가 안나와서 힌트를 얻어
function solution(num) {
let star = [];
for (let i = num-1; i >= 0; i--) {
star.push(" ".repeat(i) + "*".repeat(num-i));
}
return star.join("\n");
}
이렇게 해결하였다 ,,
뭔가 하나씩 포인트를 놓치는 것 같아 아쉽 !
* 겹치는 구간 찾기 문제에서
function solution(input) {
result = [];
num = input.split("\n");
if (num[1] < num[2] || num[3] < num[0]) {
return "X";
}
else {
while (result.length <2) {
if (num[0] <= num[2]) {
result.push(parseInt(num[2]));
}
else if (num[0] > num[2]){
result.push(parseInt(num[0]));
}
else if (num[1] <= num[3]){
result.push(parseInt(num[1]));
}
else {
result.push(parseInt(num[3]));
}
}
}
return result;
}
이런식으로 코드를 짰었는데 이건 아니다 싶어서
도움을 얻어 다시 짬 !
function solution(input) {
const [aMin,aMax,bMin,bMax] = input.split("\n").map(Number);
if (aMax < bMin || bMax < aMin) {
return "X";
}
else {
const numMin = Math.max(aMin,bMin);
const numMax = Math.min(aMax,bMax);
return [numMin,numMax];
}
}
이렇게 해주면 엄청 간단하게 해결할 수 있었돠 ..
* 8은 특별해! 문제에서는
처음에
function solution() {
result = [];
for (i=0; i<10000; i+) {
if(toString(i).includes("8")) {
result.push(toString(i));
}
}
return result.length;
}
이렇게 풀었는데 답이 안나와서 힌트를 얻어
* 암호문 해석하기 문제에서
처음에
var signal1 = {'a': 'n', 'b': 'd', 'c': 'a', 'd': 'b', 'e': 'e', 'f': 'l', 'g': 'j', 'h': 'o', 'i': 'z', 'j': 'u', 'k': 'y', 'l': 'v', 'm': 'w', 'n': 'q', 'o': 'x', 'p': 'r', 'q': 'p', 'r': 'f', 's': 'g', 't': 't', 'u': 'm', 'v': 'h', 'w': 'i', 'x': 'c', 'y': 'k', 'z': 's'}
var signal2 = {'a': 'z', 'b': 'y', 'c': 'x', 'd': 'w', 'e': 'v', 'f': 'u', 'g': 't', 'h': 's', 'i': 'r', 'j': 'q', 'k': 'p', 'l': 'o', 'm': 'n', 'n': 'm', 'o': 'l', 'p': 'k', 'q': 'j', 'r': 'i', 's': 'h', 't': 'g', 'u': 'f', 'v': 'e', 'w': 'd', 'x': 'c', 'y': 'b', 'z': 'a'}
// 지시사항을 참고하여 solution 함수 안에 코드를 작성하세요.
function solution(code) {
result = [];
console.log(code);
var fnum, sstr = code.split(" ");
for (i=0; i<fnum.length; i++) {
if (i == 0) {
result.push(signal1[sstr]);
}
else {
result.push(signal2[sstr]);
}
}
return result;
}
이렇게 코드를 짰는데 답이 안나와서 헬프 요청 ,,
var signal1 = {'a': 'n', 'b': 'd', 'c': 'a', 'd': 'b', 'e': 'e', 'f': 'l', 'g': 'j', 'h': 'o', 'i': 'z', 'j': 'u', 'k': 'y', 'l': 'v', 'm': 'w', 'n': 'q', 'o': 'x', 'p': 'r', 'q': 'p', 'r': 'f', 's': 'g', 't': 't', 'u': 'm', 'v': 'h', 'w': 'i', 'x': 'c', 'y': 'k', 'z': 's'}
var signal2 = {'a': 'z', 'b': 'y', 'c': 'x', 'd': 'w', 'e': 'v', 'f': 'u', 'g': 't', 'h': 's', 'i': 'r', 'j': 'q', 'k': 'p', 'l': 'o', 'm': 'n', 'n': 'm', 'o': 'l', 'p': 'k', 'q': 'j', 'r': 'i', 's': 'h', 't': 'g', 'u': 'f', 'v': 'e', 'w': 'd', 'x': 'c', 'y': 'b', 'z': 'a'}
// 지시사항을 참고하여 solution 함수 안에 코드를 작성하세요.
function solution(code) {
result = [];
console.log(code);
var [fnum, sstr] = code.split(" ");
for (i=0; i<fnum.length; i++) {
if (fnum[i] == 0) {
result.push(signal1[sstr[i]]);
}
else {
result.push(signal2[sstr[i]]);
}
}
return result.join("");
}
fnum과 sstr을 그냥 배열에 넣어버리고
중간에 i번째라는거 잘 넣어주고
마지막에 join함수 넣어줘야함 ,,
지금 좀 머리가 안돌아가는듯 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅠ
안쉬고 풀어서 그런것 같지만 쉴수 없다 ..
* 자바스크립트에서 소문자로 변경해주는 함수는 toLowerCase()이다.
* 문자의 빈도 조사하기 문제에서는
힌트를 얻어
function solution(str) {
str = str.toLowerCase();
alpha_cnt = {};
for (i = 0; i < str.length; i++) {
if (str[i] !== ' ') {
if (alpha_cnt[str[i]]) {
alpha_cnt[str[i]]++;
} else {
alpha_cnt[str[i]] = 1;
}
}
}
return alpha_cnt;
}
이렇게 해결할 수 있었다,,
저 공백을 주의 !
일단 잘 못풀었던거 위주로 정리는 해봤는데 진짜 너무 정신없다 ;;;;
일단은 시험 화이팅이다