오늘은
오늘은 주말입니다 일요일이라 여유롭게 점심을 먹고
카페로 향했습니다
JavaScript에 대한 강의도 듣고
코딩 테스트도 연습하고
여유롭지만 코딩을 놓지 않았던 주말이었습니다
JavaScript
<비교 연산자>
==, != 이중등호 - 두 값이 같은지 알 수 있다
타입은 구분하지 않음 => 두 값이 다른 타입이면 같아지도록 강제로 변환한다
-> 1 == '1' = ture
-> 1 != '1' = false
===, !== 삼중등호 - 엄격한 동등 연산자
- 타입 구분, 값과 타입 모두 비교 => 같은 타입으로 변환하는 과정을 거치지 않음
-> 1 === '1' = false
-> 1 !== '1' = true
<Console 명령어>
alert = 사용자에게 뭔가를 출력해주지만 콘솔에서 출력하진 않음
팝업창으로 띄워준다
prompt = 팝업창으로 입력을 받아서 값으로 적용시킨다
-> let userInput = prompt("please enter a number")
= 숫자를 입력하라는 창이 뜬다 -> 숫자를 입력하면 userInput의 값이 "그 숫자"가 된다(문자열이된다)
parseInt( ) = 문자열을 숫자로 바꿔줌
JavaScript 파일을 실행할 편집기 = VSCode
이름.js 로 파일 저장
<조건문>
if문, if - else문, if - else if - else문
if(조건) {
실행문 // 조건-> true인 경우 실행O / false인 경우 실행X
}
if(조건1){
실행문1
} else if (조건2){
실행문2
} else if (조건3){
실행문3
}
=> 조건1이 거짓이면 else if 로 넘어가고 조건2도 거짓이라면 그 다음 else if문으로 넘어간다
else 구문 = 조건에 매치되는 것이 없으면 마지막으로 실행되는 것 = 맨 마지막에 오는 것
위의 if 조건문들이 참이 아닌지만 확인
else 구문을 사용하지 않아도 된다
if문 안의 if문 = 조건문 안에 조건문 넣기
중첩을 사용하면 프로그램이 느려질 수 있다
<truthyness, falsyness>
= Truth-y값, False-y값
* False값
false
0
""(empty string)
null
undefined
NaN
=> 나머지 = True값
<논리 연산자>
다른 두 표현식을 합쳐 여러 논리를 하나로 결합함 -> 하나의 큰 논리 형성 가능
and && = 왼쪽과 오른쪽이 모두 true 여야 ture 값을 얻을 수 있다 => 둘중 하나라도 거짓이라면 거짓
or || = 둘중 하나라도 참이라면 결과는 true => 둘 다 거짓이어야 결과가 false로 나온다
not ! = 두 표현식을 결합하지는 않지만 표현식에 작용 -> 값을 반전시키는 역할
<switch-case구문>
switch = 기본적으로 일치하는 항목을 찾는 일을 한다
일치하는 항목을 찾으면 거기서부터 코드를 실핼하기 시작
중단 지점까지 계속 실행
=> break를 만날때까지 실행
default case = default: => 기타 값이 입력돼서 아무것도 일치하지 않는 경우
코딩 테스트
Description
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.
function solution(my_string, n) {
var answer = '';
// 각 문자를 n만큼 반복
// repeat 함수 사용
for(var i = 0; i < my_string.length; i++){
answer += my_string[i].repeat(n);
}
return answer;
}
repeat() 함수를 사용하면 간단히 문자열의 각 요소를 반복하게 할 수 있습니다
Description
문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.
function solution(str1, str2) {
var answer = 0;
//str1 안에 str2가 있다면 = 1
//str1 안에 str2가 없다면 = 2
// String.includes() 사용
if (str1.includes(str2)){
answer = 1;
}
if (!str1.includes(str2)){
answer = 2;
}
return answer;
}
String.includes() 함수의 ()괄호 안에 확인하고 싶은 문자열을 넣어주면 String안에 해당 문자열이
있는지 없는지 판단을 해줍니다
그렇게 해서 있다면 1의 값을, 없다면 2의 값을 return하도록 하였습니다
Description
문자열 my_string과 문자 letter이 매개변수로 주어집니다. my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요.
function solution(my_string, letter) {
var answer = '';
//my_string 에서 letter 제거
// .replace() 사용
// RegExp 객체를 활용
// let regexAll = new RegExp(pattern, "g"); // 모든 패턴을 찾음
// let regexAllCase = new RegExp(pattern, "gi"); // 대소문자 구분 없이 모든 패턴을 찾음
var regexAllCase = new RegExp(letter, "g")
answer = my_string.replace(regexAllCase,"");
return answer;
}
.replace() 함수를 이용하여 해결해보려고 하였지만 변수로 문자를 받아와서 사용하기가 어려워
다른 방법을 찾아보니, let 이름 = new RegExp(pattern, "g");라는 함수가 있어서 사용해보았습니다
정규표현식이라는 것을 사용하는데
정규표현식이란 일정한 ‘패턴’을 가진 ‘문자열’의 ‘집합’을 표현하기 위해 사용하는 ‘형식 언어(formal language)’라고 합니다
문자열을 대상으로 ‘패턴 매칭 기능’을 제공하는데
이 기능은 특정 패턴과 일치하는 문자열을 검색, 추출, 치환(대체)할 수 있는 기능을 말합니다
새롭게 알게 된 개념이라서 이해하는데에 약간 어려움이 있었지만
문제를 해결하는데에는 큰 도움이 되었습니다
Description
머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다. 구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.
function solution(price) {
var answer = 0;
// 10만원 이상 30만원 미만 = 95%
// 30만원 이상 50만원 미만 = 90%
// 50만원 이상 = 80%
if(100000 <= price && price < 300000){
answer = Math.floor(price * 0.95);
}else if(300000 <= price && price < 500000){
answer = Math.floor(price *0.9);
}else if(price >= 500000){
answer = Math.floor(price * 0.8);
}else{
answer = Math.floor(price);
}
return answer;
}
코드 자체에는 문제가 없어보였지만 정답 확인을 위해 거치는 테스트 단계에서 한두번씩 오류가 생겼었습니다
천천히 문제를 다시 살펴보니
제한사항
10 ≤ price ≤ 1,000,000
price는 10원 단위로(1의 자리가 0) 주어집니다.
소수점 이하를 버린 정수를 return합니다.
이렇게 제한사항이 있었습니다...
그래서 소수점 이하를 버리는 함수인 Math.floor() 를 사용하여 정수값을 return받아 해결할 수 있었습니다
2023. 09. 24 (일)
프로그래머 도전기 29일차 (0) | 2023.09.26 |
---|---|
프로그래머 도전기 28일차 (0) | 2023.09.26 |
프로그래머 도전기 26일차 (0) | 2023.09.24 |
프로그래머 도전기 25일차 (0) | 2023.09.22 |
프로그래머 도전기 24일차 (0) | 2023.09.21 |