일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 함수
- 아이디어 #앱아이디어 #건축 #현장관리어플
- 랑과나의사막
- 스파르타코딩클럽
- 자바스크립트
- 항해99
- 폴로스타일니트
- 책리뷰
- 비쥬얼 스튜디오 코드 프로그램 단축키(윈도우)
- 탬플릿문자열
- 2023나만의버킷리스트만들기
- 배열의 요소로 함수 할당
- Visual Studio Code Shortcut for windows
- 스코프 및 화살표 함수
- 봄날스웨터
- 배열
- 혼공자스
- 객체
- 문자자료형
- 자바
- 나머지 매개변수
- 유령의마음으로
- 조건문
- 불자료형
- 숫자자료형
- 혼자공부하는자바스크립트
- BomNalSweater
- 항해99사전강의
- 자바뽀개기
- 일급객체(함수)
- Today
- Total
하고 싶은게 많음
[항해99_JavaScript 문법 종합반] 1주차 - 3 (숙제) 본문
1. 문자열을 입력받아 P, p의 개수와 Y, y의 개수를 구하여 합계 출력
https://school.programmers.co.kr/learn/courses/30/lessons/12916
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제를 보면서 1) 일단 문자열을 split으로 쪼개서 P와 p, Y와 y의 여부를 확인하고, 2) 확인한 만큼 반복문을 돌려서 3) 돌린 만큼 합계의 변수에 저장해 4) 그걸 갯수가 동일하면 true 아니면 false 반환시키자. 라고 생각했다. 그래서 아래와 같이 코드를 짰는데...
function solution(s) {
let sSum = 0;
let ySum = 0;
let sSplit = s.split("")
for(let i=0; i<sSplit.length+1; i++){
if(sSplit[i] === "p" || sSplit[i] === "P"){
sSum++;
} else if (sSplit[i] === "y" || sSplit[i] === "Y") {
ySum++;
}
}
if (sSum === ySum) {
return true;
} else {
return false;
}
}
다른 분들이 코드를 짠 걸 보니 내가 만든 코드는 거의 덕지덕지 빈 상자방구들을 모아서 만든거라고 할 수 있었다.
다른 똑똑한 사람들이 만든 코드
소문자를 일괄로 대문자로 바꾸고(toUpperCase() ), P를 기준으로 문자열을 자르고(split("P")) 그 길이를 구한 것과 동일한 과정을 거친 (Y) 것과 비교연산자(===)를 이용해 결과를 반환시켰다.
length를 이렇게도 쓴다고..? 놀랄 노. length 당신은 대체...!
2. 두 배열을 입력받는다. -> 하나의 배열은 true와 false로 구성되어 있고, true는 +, false는 -로 활용하여 참거짓으로 이루어진 배열의 같은 인덱스의 또 다른 배열에 적용하여 그 배열의 합계를 구하는 문제.
... 아니 대체 무슨 말이냐면
이와 같이 absolutes의 배열과 signs라는 배열을 입력받아 [+4, -7, +12]로 만들고 이 요소들을 다 더해서 9가 되도록 하라는 말. 문제 설명하기도 여간 어려운 것이 아니다!
https://school.programmers.co.kr/learn/courses/30/lessons/76501
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이 또한 문제를 보면서 1) signs 배열을 for문 if문으로 true 를 +로, false를 -로 바꾸고 2) absolutes의 배열 각 요소에 map을 이용해서 새로운 배열을 만들고 3) 새로운 absolutes 배열의 요소들을 다 더하는 방법을 생각했었다.
function solution(absolutes, signs) {
let sum = 0;
for (let i =0; i<absolutes.length; i++){
if(signs[i]===true){
absolutes[i] = "+" +absolutes[i];
} else {
absolutes[i] = "-" +absolutes[i];
}
}
for (let i =0; i<absolutes.length; i++){
sum += absolutes[i];
}
console.log(sum);
결과는 아래와 같이 나와버림.
0+4-7+12 0-1-2+3 |
당연함. +, -도 문자로 들어가서 그냥 문자끼리의 합이 되어버림. Number를 통해 형변화를 시켜줬더니 아래와 같이 값이 나왔다.
9 undefined 0 undefined |
...뭐가 잘못된것인지....잘못된 방법이었고, 아무리해도 undefined처리가 되었다. 그러던 중 마지막 콘솔로그 아니라 return이 잘못됏다는걸 알고 수정했더니 성공했다...ㅎㅎ
function solution(absolutes, signs) {
let sum = 0;
for (let i =0; i<absolutes.length; i++){
if(signs[i]===true){
absolutes[i] = "+" +absolutes[i];
} else {
absolutes[i] = "-" +absolutes[i];
}
}
for (let i =0; i<absolutes.length; i++){
sum += Number(absolutes[i]);
}
return sum;
}
일단 강의를 봤는데 세상에나 만상에나. 애초에 접근 방식이 달랐고, 옳은 방법은 1) 반복문으로 signs을 돌리고 2) true면 sum이라는 변수에 absolutes의 값을 더하고, 2) 아니라면(false) 값을 빼면 되는 아주 간단한 방식이었다.
function solution(absolutes, signs) {
let sum = 0;
for (let i =0; i<absolutes.length; i++){
if(signs[i]===true){
sum += absolutes[i];
} else {
sum -= absolutes[i];
}
}
return sum;
}
진짜 세상에나 만상에나. 대가리 빡빡 때림.
- 오늘의 다짐: 안풀리는 문제는 시간차를 두고 풀어보자. -
'IT > 항해99' 카테고리의 다른 글
[항해99_JavaScript 문법 종합반] 2주차 - 2(숙제, 기타 알고리즘 문제) (0) | 2023.09.27 |
---|---|
[항해99_JavaScript 문법 종합반] 2주차 - 1 (구조 분해 할당, 나머지 매개변수 , 일급객체(함수), 배열의 요소로 함수 할당, Map, Set) (0) | 2023.09.27 |
[항해99_JavaScript 문법 종합반] 1주차 - 2 (조건문, Boolean에서 true와 false로 나오는 값, 객체{ }, 배열[ ], 반복문) (2) | 2023.09.26 |
[항해99_JavaScript 문법 종합반] 1주차 (변수와 상수, 데이터타입, 형변환, 연산자, 함수, 스코프 및 화살표 함수) (1) | 2023.09.25 |
[항해99_JAVA] 2주차 (0) | 2023.08.11 |