오늘은 하루종일 코딩테스트! 주말동안 프로그래머스 Lv. 0 문제를 풀었더니 생각보다 어렵지 않게 풀었다. 근데 알고보니 챌린지 문제라는게 있었다..ㅎ
내일은 챌린지 문제도 풀어봐야지..!
주애
님께서 for문 동작원리를 엄청 자세하게 설명 해주셨는데.. 오 for문 마스터 된듯..?
자꾸 for문 돌릴때마다 콘솔 다찍어보고, for문 구글링 해보고 썼었는데 동작원리를 알게되니 좀 더 자유롭게 쓸 수 있게 됐다. 이제 for문 쓰면서 잘 이해가 안되면 주석을 열심히 달아놔야겠다. 감사해요 주애
님, 절 이해시키다니... 진짜 훌륭한 개발자가 되실꺼에여!!!
(1)주애
님이 가르쳐주신 includes()
함수 및 삼항연산자!!
function solution(numbers) {
let sum = 0;
for (let i = 1; i < 10; i++) {
sum += numbers.includes(i) ? 0 : i;
// numbers가 if를 포함하고 있으면 sum에 0을 더하고
// 포함하지 않는다면 i에 sum을 더해준다.
}
return sum;
}
(2) 이중 for문
이상한 문자 만들기문제를 풀며 이중 for문에 좀 더 익숙해졌다!!
function solution(s) {
let answer = ""; // 답을 넣을 빈 배열
let words = s.split(" "); // 공백을 기준으로 단어를 쪼개준다.
// 예를들어 "happy birthday"라는 단어를 넣으면 ['happy','birthday']로 쪼개진다.
for (let i = 0; i < words.length; i++) {
//words.length만큼 for문을 돌린다.
//지금 예시에서 words.length는 2이다. (words[0],words[1])
//words[0]은 happy, words[1]은 birthday
for (let j = 0; j < words[i].length; j++) {
//words[i].length만큼 for문을 돌린다.
//words[0].length는 5이다. (h,a,p,p,y)
//words[0]에서 다돌면 바깥 for문으로 나가서 i의 값이 1로 바뀐다.
//words[1].length는 8이다. (b,i,r,t,h,d,a,y)
if (j % 2 == 0) {
//단어의 인덱스 값이 짝수일때
answer += words[i][j].toUpperCase();
//words[i]의 [j]번째 단어는 대문자로 변화해서 answer변수에 넣어준다.
//예) words[0][4] : words[0]은 happy이고, j가 4일때의 값은 y이다.
//y는 대문자로 answer 변수에 넣어준다.
} else {
answer += words[i][j].toLowerCase();
//홀수일땐 소문자를 넣어준다.
//예) words[1][1] : words[1]은 birthday이고, j가 1일때 값은 i이다.
//i는 소문자로 answer변수에 넣어준다.
}
}
if (i < words.length - 1) {
//단어와 단어 사이에 띄어쓰기를 해주어야 한다.
//if문으로 조건을 걸어 놓은 이유는,
//만약 그냥 띄어쓰기만 한다면 for문이 끝날때마다 띄어쓰기를 해줘서,
//마지막 단어 뒤에도 띄어쓰기가 된다.
//하지만 words.length -1을 해주면 마지막 for문 끝난 단어 뒤에는
//띄어쓰기가 안들어감!
answer += " ";
// 예를들어 현재 words.length는 2이다.
// 만약 조건문이 없고, answer += ' ';조차 없으면 answer는
// "HaPpYBiRtHdAy"로 띄어쓰기 없이 나온다.
// 만약 조건문 없이 answer += ' ';만 해준다면
//"HaPpY BiRtHdAy " birthday뒤에도 띄어쓰기가 들어간다.
//words.length -1을 해서 마지막 words 뒤에는 띄어쓰기를 붙여주지 않는 것 이다.
}
}
return answer;
}
주애
님 코드 (블로그에 포스팅 하시면 여기에 reference로 걸겠습니다!)
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ♥