[항해99] 11일차 TIL - 알고리즘 테스트!

김헤일리·2022년 11월 24일
0

TIL

목록 보기
8/46
post-custom-banner

오늘은 드디어 알고리즘 테스트를 봤다.
분명 한 열흘 전에 궁금해서 혼자 프로그래머스를 들어갔을 땐 0레벨 문제만 보고도 뭔가 아무 생각이 들지 않아서 꺼버렸는데, 비록 1레벨이지만 문제를 30개 넘게 풀었다는게 신기하다.

아주 조금씩이지만 배워가고 있다는게 대견하다 🙂

시험은 3문제 중 2개를 푸는거였고, 가장 어려운 문제를 제외한 두 문제를 풀었다 😅
제일 어려웠던 난이도는 일단 시험 후에 풀었다.
그냥 알고리즘을 풀 수 있게 생각을 할 수 있다는게 좋다!


1. 윷놀이의 배와 등 구하기!

  • 윷놀이에서 0(배) 혹은 (1)등의 개수를 이용해서 도,개,걸,윷,모를 판단할 수 있다.

    • 도 [0,0,0,1] : 등이 1개면 도
    • 개 [0,0,1,1] : 등이 2개일때 개
    • 걸 [0,1,1,1] : 등이 3개면 걸
    • 윷 [0,0,0,0] : 등이 0개면 윷
    • 모 [1,1,1,1] : 등이 4개면 모
  • 주어진 배열은 언제나 4자리이고, 0과 1만 들어있다고 가정했을 때, [0,1,0,0]의 값이 "걸"이 나와야한다.

let arr1 = [0,1,0,0] 

function solution(arr1){
    let bae = 0 // 각 배열에서 등과 배의 횟수를 구해야하기 때문에, 변수에 0을 먼저 할당한다.
    let deung = 0

    for (let i =0; i < arr1.length; i++){ // i는 0부터 시작을 하고, 배열의 길이 (4)만큼 돈다.
        if(arr1[i] ===0){ // 이때 배열의 특정 요소(i번째 요소)가 0일 경우, 
            bae += 1 //배에 1이 추가되고
        } else { // 0이 아니라면
            deung += 1 // 등에 1일 추가된다.
        }
    }

    if (bae === 0){ // 반복문이 끝나고 실행되는 조건문. 만약 배가 0이면
        answer = "모" // 모를 반환
    } else if (bae === 1){ // 배가 1이면
        answer = "도" // 도를 반환
    } else if (bae === 2){ // 배가 2면
        answer = "개" // 개를 반환
    } else if (bae === 3){ // 배가 3이면
        answer = "걸" // 걸을 반환
    } else if (bae === 4){ // 배가 4면
        answer = "윷" // 윷을 반환
    }
    
    return answer
}


console.log(solution(arr1))
  • 가장 쉬운 난이도였던 만큼, 기존에 쓰던 반복문과 조건문을 통해서 쉽게 풀 수 있었다!

2. 트리모양 별찍기

  • star라는 변수에 담아진 수 만큼 줄을 만들어서 트리모양의 별을 찍어야 한다.
let star = 9;

function solution(star){
    let tree = '' // 1. 별을 찍을 공백을 특정 변수에 할당

    for (let i = 0; i < star; i++){ // 2. 트리모양의 별을 찍기 위해 반복문을 돌린다
        for (let j = star; j > i; j--){ 
         // 3. 반복변수 j는 star라는 변수에 있는 값부터 시작하고, 하나씩 작아지면서 j가 i보다 작을때까지 반복문이 돌면서,
            
          tree += ' ' 
          // 4. 트리라는 변수에 공백을 추가한다.
        }

        for(let k = 0; k < 2 * i-1; k++){ // 4.반복변수 j의 반복문이 끝나면, 반복변수 k의 반복문이 시작된다.
          // 5. k는 0부터 시작하고, (2*i)-1의 값보다 작을때까지 1씩 증가하면서,
            tree += '*' // 6. tree라는 변수에 별을 찍는다.
        }
        tree += '\n' // 7. 반복변수 k의 반복문이 종료되면, tree라는 변수에 줄바꿈을 추가한다.
    }// 8. 그리고 반복변수 i의 반복문이 i=1이 되면서 다시 시작된다. 
    console.log(tree) 
}

console.log(solution(star))
		* // 결과물로 출력된다.
       ***
      *****
     *******
    *********
   ***********
  *************
 ***************
  • 고전적 예시였기 때문에 이미 블로그에도 기록해놔서 시험 자체가 어렵진 않았다.
  • 처음 했을 땐 중첩 반복문이 미쳤다고 생각했는데, 다른 경우에 사용한 중첩 반복문은 스스로 생각해서 사용할 수 있었다!

아직 3번 문제는 해결할 수 없었다...
하지만 계속 시도할 것이다!
그리고 풀게되면 여기에 추가해야지 😁

알고리즘 주차로 들어가면서 다들 약간 기운이 없어진거 같다. 뇌를 혹사 시켜서일까...
나도 진짜 하루에 문제를 10개씩 풀다보니 지쳐서 오늘은 많이 공부를 할 수 없었다 ㅠㅠ

헤이해지지 않도록 노력해야지!!! 지칠땐 명랑이를 만져야지
사랑하는 우리 닥스훈트 ㅎㅎ

profile
공부하느라 녹는 중... 밖에 안 나가서 버섯 피는 중... 🍄
post-custom-banner

0개의 댓글