[알고리즘]배열탐색:큰 수 출력하기, 보이는 학생,가위바위보

chaewon Im·2022년 1월 19일
0
post-thumbnail

1.큰 수 출력하기

📃문제

N개의 정수를 입력받아, 자신의 바로 앞 수보다 큰 수만 출력하는 프로그램을 작성하세요.
(첫번째 수는 무조건 출력)

[입력 설명]
첫줄에 자연수 N이 주어진다.
두번째 줄부터 N개의 정수가 주어진다.

[출력 설명]
자신의 바로 앞 수보다 큰 수만 한 줄로 출력한다.


✏️내 풀이

첫번째 인덱스로 answer를 초기화하고 배열을 돌면서 i와 i-1 위치의 값을 비교하고, 앞의 수보다 더 크면 answer 배열에 push한다.

function solution(arr){
    let answer = [arr[0]];
    for(let i=1;i<=arr.length;i++){
        if(arr[i]>arr[i-1]){
            answer.push(arr[i])
        }
    }

    return answer
}

let arr = [7,3,9,8,6,12]
console.log(solution(arr))

2.보이는 학생

📃문제

선생님이 N(1<=N<=1000)명의 학생을 일렬로 세웠습니다. 일렬로 서 있는 학생의 키가 앞에서부터 순서대로 주어질때
맨 앞에 서 있는 선생님이 볼 수 있는 학생의 수를 구하는 프로그램을 작성하세요.
(앞에 서 있는 사람들보다 크면 보이고,작거나 같으면 보이지 않습니다.)

[입력 설명]
첫줄에 정수 N이 주어진다.
두번째 줄에 N명의 학생의 키가 앞에서부터 순서대로 주어진다.

[출력 설명]
선생님이 볼 수 있는 최대 학생수.


✏️내 풀이

가장 큰 키를 저장할 비교용도의 변수 maxHeight에 배열을 돌면서 지금까지 중 가장 키가 큰 값을 저장하고 answer를 +1하며 카운팅,
뒤로 가면서 현재 가장 큰 키보다 더 큰 값이 나오면 maxHeight를 변경하고 카운팅하며 비교를 이어감.

function solution(arr){
    let answer = 0;
    let maxHeight = 0;
    for(height of arr){
        if(height > maxHeight){
            maxHeight = height
            answer++
        }
    }
    return answer
}

let arr = [130,135,148,140,145,150,150,153]
console.log(solution(arr))

3.가위바위보

📃문제

A,B 두 사람이 가위바위보 게임을 합니다. 총 N번의 게임을 하여 A가 이기면 A를 출력하고,B가 이기면 B를 출력합니다. 비길 경우에는 D를 출력합니다.
가위=1, 바위=2, 보=3

ex)N=5이면
[회수|1|2|3|4|5][A정보|2|3|3|1|3]
[B정보|1|1|2|2|3][승자|A|B|A|B|D]

두 사람의 각 회의 가위,바위,보 정보가 주어지면 각 회를 누가 이겼는지 출력하는 프로그램을 작성하세요.

[입력 설명]
첫줄에 게임횟수 N이 주어진다.(5)
두번째 줄에 A가 낸 가위,바위,보 정보가 N개 주어진다(1,2,3,1,2)
세번째 줄에 B가 낸 가위,바위,보 정보가 N개 주어진다(3,2,1,3,2)

[출력 설명]
각 줄에 각 회의 승자를 출력,비겼으면 D를 출력(B,D,A,B,D)


✏️풀이

📚풀이1)

A가 이기는 케이스,비기는 케이스를 조건문으로 지정하고 그 외의 케이스는 전부 B가 이기는 케이스로 지정.
[A가 이기는 케이스]
A B
1 3
2 1
3 2

function solution(a,b){
    let answer = [];
    for(let i=0;i<a.length;i++){
        if(a[i]===b[i]){
            answer.push('D')
        }else if(a[i]===1 && b[i]===3){
            answer.push('A')
        }else if(a[i]===2 && b[i]===1){
            answer.push('A')
        }else if(a[i]===3 && b[i]===2){
            answer.push('A')
        }else{
            answer.push('B')
        }
    }
    return answer
}

let a = [1,2,3,1,2]
let b = [3,2,1,3,2]
console.log(solution(a,b))

📚풀이2)

연산을 이용해서 할 수도 있다
[A가 이기는 케이스]
A B
1 3 === -2
2 1 === 1
3 2 === 1
=> else if 구문을 아래와 같이 사용할 수 있음

else if(a[i]-b[i]===-2 || a[i]-b[i]===1 ) answer.push('A')
profile
빙글빙글 FE 개발자

0개의 댓글