[프로그래머스] N으로 표현 | kotlin
·
학습 기록/문제풀이
문제 설명아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다.12 = 5 + 5 + (5 / 5) + (5 / 5)12 = 55 / 5 + 5 / 512 = (55 + 5) / 55를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다.이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요. 제한사항N은 1 이상 9 이하입니다.number는 1 이상 32,000 이하입니다.수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다.최솟값이 8보다 크면 -1을 return 합니다.풀이배열 설정val dp= Array(9){mutableSetOf..
[프로그래머스] 주식 가격 | kotlin
·
학습 기록/문제풀이
문제 설명초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.prices의 길이는 2 이상 100,000 이하입니다.풀이인덱스 차이를 이용하여 초를 계산하기 위해 스택에 인덱스를 넣는 방식으로 구현했다.주어진 배열을 순회하며스택에 인덱스를 push한다.만약 현재 주식가격이 스택의 top과 대응하는 주식가격보다 작다면 가격이 떨어진 것스택에서 pop한 인덱스와 현재 인덱스의 차이(= 초)를 answer 배열에 저장한다.배열을 순회 한 후 stack에 남아있는 값들은 끝까지 가격이 떨어지지 않은 것배열의 마지막 인덱..
[소프티어] 장애물 인식 프로그램 | kotlin
·
학습 기록/문제풀이
문제 설명자율주행팀 SW 엔지니어인 당신에게 장애물과 도로를 인식할 수 있는 프로그램을 만들라는 업무가 주어졌다. 우선 [그림 1]과 같이 정사각형 모양의 지도가 있다. 1은 장애물이 있는 곳을, 0은 도로가 있는 곳을 나타낸다. 당신은 이 지도를 가지고 연결된 장애물들의 모임인 블록을 정의하고, 불록에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 장애물이 좌우, 혹은 아래위로 붙어 있는 경우를 말한다. 대각선 상에 장애물이 있는 경우는 연결된 것이 아니다. [그림 2]는 [그림 1]을 블록 별로 번호를 붙인 것이다. 지도를 입력하여 장애물 블록수를 출력하고, 각 블록에 속하는 장애물의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오.제약조건N은 정사각형임으로 가로와 세로의 크기는 같으며..
[소프티어] 함께하는 효도 | kotlin
·
학습 기록/문제풀이
문제 설명 남우는 m명의 친구를 불러 나무에서 열매를 수확하는 일을 맡겼습니다. 나무들은 n * n 크기의 격자 모양의 땅 위의 모든 칸에 심어져 있고, 각 나무마다 가능한 열매 수확량이 주어져 있습니다.친구들은 n * n 크기의 격자 내의 서로 다른 위치에서 출발하여 1초에 1칸씩 상하좌우 인접한 칸 중 한 곳으로 움직일 수 있으며, 최종적으로 모든 열매 수확량의 합을 최대로 만들고자 합니다. 이때 각 칸에서 열매를 수확하는데 걸리는 시간은 0초이며, 한 나무에 여러 친구가 방문하게 되더라도 열매는 딱 한 번만 수확이 가능합니다. 이때, 친구들끼리 이동하는 도중 동시에 같은 사과나무에서 마주치는 경우에는 싸움이 일어날 수 있기 때문에 남우는 이와 같은 경우가 없기를 바랍니다.m명의 친구들이 3초 동안 ..
[소프티어] 나무섭지 | kotlin
·
학습 기록/문제풀이
문제 설명남우는 미로에 갇혔습니다. 미로는 n × m 크기의 격자로 이루어져 있고, 각 격자 칸은 남우, 출구, 유령, 빈 공간, 벽 중 하나로 이루어져 있습니다. 남우가 출구로 이동하면 미로를 탈출하게 되며, 출구로 이동하기 위해 시작 위치에서 상하 좌우로 인접한 칸 중 격자를 벗어나지 않으면서 벽이 아닌 칸을 골라 이동하는 것을 반복하게 됩니다.만약 n 이 4이고, m 이 6인 격자가 다음과 같이 주어졌다면, 남우는 다음 경로로 탈출이 가능합니다.이 미로 안에 유령이 있는 경우도 있습니다. 남우는 유령을 무서워 하기 때문에 유령을 마주치지 않고 탈출하고 싶습니다. 남우는 1초에 한 칸씩 상하 좌우로 인접한 칸 중 격자를 벗어나지 않으며 벽이 아닌 곳으로 이동이 가능하지만, 유령은 1초에 한 칸씩 상하..
[소프티어] 순서대로 방문하기(HSAT 7회 정기 코딩 인증평가 기출) | kotlin
·
학습 기록/문제풀이
문제 설명 Sam은 팀장님으로부터 차량이 이동 가능한 시나리오의 수를 찾으라는 업무 지시를 받았습니다. 이동은 숫자 0과 1로만 이루어져 있는 n x n 크기의 격자 위에서 일어납니다. 숫자 0은 빈 칸을 의미하며, 숫자 1은 해당 칸이 벽으로 막혀 있음을 의미합니다. 아래는 n이 3인 경우의 예시입니다. 0 0 00 0 00 0 1 차량은 n x n 격자 내에서 m개의 지점을 순서대로 방문하려고 합니다. 이 때 이동은 항상 상하좌우 중 인접한 칸으로만 이동하되 벽은 지나갈 수 없으며, 한 번 지났던 지점은 다시는 방문해서는 안 됩니다. 이러한 조건 하에서 차량이 이동 가능한 서로 다른 가지 수를 구하는 프로그램을 작성해보세요. 방문해야 하는 지점의 첫 지점이 출발점이며, 마지막 지점이 도착점임에 유의합..