항해99 12기 - 230127 TIL

지윤·2023년 1월 27일
0

항해99

목록 보기
14/40
post-thumbnail

오늘 한 일

오늘은 하루종일 코딩테스트! 주말동안 프로그래머스 Lv. 0 문제를 풀었더니 생각보다 어렵지 않게 풀었다. 근데 알고보니 챌린지 문제라는게 있었다..ㅎ
내일은 챌린지 문제도 풀어봐야지..!
주애님께서 for문 동작원리를 엄청 자세하게 설명 해주셨는데.. 오 for문 마스터 된듯..?
자꾸 for문 돌릴때마다 콘솔 다찍어보고, for문 구글링 해보고 썼었는데 동작원리를 알게되니 좀 더 자유롭게 쓸 수 있게 됐다. 이제 for문 쓰면서 잘 이해가 안되면 주석을 열심히 달아놔야겠다. 감사해요 주애님, 절 이해시키다니... 진짜 훌륭한 개발자가 되실꺼에여!!!

오늘 배운 것

(1)주애님이 가르쳐주신 includes() 함수 및 삼항연산자!!

  • 없는 숫자 더하기 문제를 푸시면서 가르쳐 주셨다.
  • includes() 메서드는 배열이 특정 요소를 포함하고 있는지 판별
  • 정확한 코드는 기억이 안나지만 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;
}

참고한 웹사이트

profile
방금 태어난 개발자

1개의 댓글

comment-user-thumbnail
2023년 1월 28일

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ♥

답글 달기