(1).백준 24198 Muffinspelet는 음식을 분배하는 과정으로
공평함을 위해 첫 사람이 둘로 나누면 다른 사람이 그 중 하나를 먹고
다시 그 음식을 둘로 나누는 방식으로 진행된다.

당연한 이야기지만 상대방이 선택권을 가지기 때문에
최대한 동일한 크기로 만드는 것이 중요하고
정수 단위로만 쪼갤 수 있기 때문에 1,3,5의 경우에는
1/0 , 2/1, 3/2의 형태로 쪼개진다.

모든 음식이 사라질 때 까지 돌려야 하기 때문에
음식의 잔량인 input이 0이 될 때 까지 while문으로 돌렸으며
순번을 확인하기 위해 switching을 통해 턴을 구분했다.

switch로 하고 싶었지만 let switch가 되지 않았기 때문에 (switch문이 있어서)
switching으로 할 수 밖에 없었다.

let input = 13

let Alf = 0
let Beara = 0
let switching = true
while(input){
    let half = Math.round(input/2)
    input -= half
    if(switching){
        Beara += half
    }
    else{
        Alf += half
    }
    switching = !switching
}

console.log(Alf,Beara)



(2).백준 5356 Triangles는 삼각형 모양으로 문자열을 출력하는 문제로
별찍기와 살짝 유사한 느낌이라고 볼 수 있다.
다른 점이라면 하나의 결과물이 아닌 여러개의 테스트케이스가 있고
Z에서 A로 넘어가는 반복이 있다는 부분이다.

출력은 repeat을 사용해서 처리했지만
A->Z->A로 넘어가는 순환부분은 아스키코드를 사용해 숫자로 변경한 다음
숫자에서 %26을 통해 초기화해버리는 방식을 선택했다.
@(String.fromCharCode((startStr.charCodeAt()-66+j)%26 +65)

let input = `3
5 A
3 Z
4 C`.split('\n')

let result = []
for(let i = 1 ; i < input.length ; i++){
    let [amount, startStr] = input[i].split(' ')
    let triangles = []
    for(let j = 1 ; j <= Number(amount) ; j++){
        triangles.push(String.fromCharCode((startStr.charCodeAt()-66+j)%26 +65).repeat(j))
    }
    result.push(triangles.join('\n'))
}


console.log(result.join('\n\n'))

+ Recent posts