# 2022 KAKAO BLIND RECRUITMENT

38개의 포스트

Level 2 ) 주차 요금 계산

문제 설명 주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산하려고 합니다. 아래는 하나의 예시를 나타냅니다. 요금표 기본 시간(분) 기본 요금(원) 단위 시간(분) 단위 요금(원) 180 5000 10 600   입/출차 기록 시각(시:분) 차량

2023년 8월 14일
·
0개의 댓글
·

프로그래머스 - 파괴되지 않은 건물

파괴되지 않은 건물 설명 N x M 크기의 행렬 모양의 게임 맵이 있습니다. 이 맵에는 내구도를 가진 건물이 각 칸마다 하나씩 있습니다. 적은 이 건물들을 공격하여 파괴하려고 합니다. 건물은 적의 공격을 받으면 내구도가 감소하고 내구도가 0이하가 되면 파괴됩니다. 반대로, 아군은 회복 스킬을 사용하여 건물들의 내구도를 높이려고 합니다. 제한사항 1 ≤ board의 행의 길이 (= N) ≤ 1,000 1 ≤ board의 열의 길이 (= M) ≤ 1,000 1 ≤ board의 원소 (각 건물의 내구도) ≤ 1,000 1 ≤ skill의 행의 길이 ≤ 250,000 skill의 열의 길이 = 6 skill의 각 행은 [type, r1, c1, r2, c2, degree]형태를 가지고 있습니다. type은 1 혹은 2이며 type이 1일 경우는 적의 공격을 의미합니다. 건물의 내구도를 낮춥니다. type이 2일 경우는 아군의 회복 스킬을 의

2023년 7월 16일
·
0개의 댓글
·

프로그래머스 - 양과 늑대

양과 늑대 설명 2진 트리 모양 초원의 각 노드에 늑대와 양이 한 마리씩 놓여 있습니다. 이 초원의 루트 노드에서 출발하여 각 노드를 돌아다니며 양을 모으려 합니다. 각 노드를 방문할 때 마다 해당 노드에 있던 양과 늑대가 당신을 따라오게 됩니다. 이때, 늑대는 양을 잡아먹을 기회를 노리고 있으며, 당신이 모은 양의 수보다 늑대의 수가 같거나 더 많아지면 바로 모든 양을 잡아먹어 버립니다. 당신은 중간에 양이 늑대에게 잡아먹히지 않도록 하면서 최대한 많은 수의 양을 모아서 다시 루트 노드로 돌아오려 합니다. 각 노드에 있는 양 또는 늑대에 대한 정보가 담긴 배열 info, 2진 트리의 각 노드들의 연결 관계를 담은 2차원 배열 edges가 매개변수로 주어질 때, 문제에 제시된 조건에 따라 각 노드를 방문하면서 모을 수 있는 양은 최대 몇 마리인지 return 하도록 solution 함수를 완성해주세요. 제한사항 2 ≤ info의 길이 ≤ 17 inf

2023년 7월 16일
·
0개의 댓글
·

프로그래머스 - 양궁대회

양궁대회 설명 카카오배 양궁대회 운영위원회는 한 선수의 연속 우승보다는 다양한 선수들이 양궁대회에서 우승하기를 원합니다. 따라서, 양궁대회 운영위원회는 결승전 규칙을 전 대회 우승자인 라이언에게 불리하게 다음과 같이 정했습니다. 만약, k(k는 1~10사이의 자연수)점을 어피치가 a발을 맞혔고 라이언이 b발을 맞혔을 경우 더 많은 화살을 k점에 맞힌 선수가 k 점을 가져갑니다. 단, a = b일 경우는 어피치가 k점을 가져갑니다. k점을 여러 발 맞혀도 k점 보다 많은 점수를 가져가는 게 아니고 k점만 가져가는 것을 유의하세요. 또한 a = b = 0 인 경우, 즉, 라이언과 어피치 모두 k점에 단 하나의 화살도 맞히지 못한 경우는 어느 누구도 k점을 가져가지 않습니다. 화살의 개수를 담은 자연수 n, 어피치가 맞힌 과녁 점수의 개수를 10점부터 0점까지 순서대로 담은 정수 배열 info가 매개변수로 주어집니다. 이때, 라이언이 가장 큰 점수 차이로 우승하기 위해

2023년 7월 16일
·
0개의 댓글
·

프로그래머스 - 주차 요금 계산

주차 요금 계산 설명 어떤 차량이 입차된 후에 출차된 내역이 없다면, 23:59에 출차된 것으로 간주합니다. 0000번 차량은 18:59에 입차된 이후, 출차된 내역이 없습니다. 따라서, 23:59에 출차된 것으로 간주합니다. 00:00부터 23:59까지의 입/출차 내역을 바탕으로 차량별 누적 주차 시간을 계산하여 요금을 일괄로 정산합니다. 누적 주차 시간이 기본 시간이하라면, 기본 요금을 청구합니다. 누적 주차 시간이 기본 시간을 초과하면, 기본 요금에 더해서, 초과한 시간에 대해서 단위 시간 마다 단위 요금을 청구합니다. 초과한 시간이 단위 시간으로 나누어 떨어지지 않으면, 올림합니다. 주차 요금을 나타내는 정수 배열 fees, 자동차의 입/출차 내역을 나타내는 문자열 배열 records가 매개변수로 주어집니다. 차량 번호가 작은 자동차부터 청구할 주차 요금을 차례대로 정수 배열에 담아서 return 하도록 solution 함수

2023년 7월 16일
·
0개의 댓글
·

프로그래머스 - k진수에서 소수 개수 구하기

k진수에서 소수 개수 구하기 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우 0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우 P처럼 소수 양쪽에 아무것도 없는 경우 단, P는 각 자릿수에 0을 포함하지 않는 소수입니다. 예를 들어, 101은 P가 될 수 없습니다. 예를 들어, 437674을 3진수로 바꾸면 211020101011입니다. 여기서 찾을 수 있는 조건에 맞는 소수는 왼쪽부터 순서대로 211, 2, 11이 있으며, 총 3개입니다. (211, 2, 11을 k진법으로 보았을 때가 아닌, 10진법으로 보았을 때 소수여야 한다는 점에 주의합니다.) 211은 P0 형태에서 찾을 수 있으며, 2는 0P0에서, 11은

2023년 7월 16일
·
0개의 댓글
·

프로그래머스 - 신고 결과 받기

신고 결과 받기 설명 이용자의 ID가 담긴 문자열 배열 id_list, 각 이용자가 신고한 이용자의 ID 정보가 담긴 문자열 배열 report, 정지 기준이 되는 신고 횟수 k가 매개변수로 주어질 때, 각 유저별로 처리 결과 메일을 받은 횟수를 배열에 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 2 ≤ id_list의 길이 ≤ 1,000 1 ≤ id_list의 원소 길이 ≤ 10 id_list의 원소는 이용자의 id를 나타내는 문자열이며 알파벳 소문자로만 이루어져 있습니다. id_list에는 같은 아이디가 중복해서 들어있지 않습니다. 1 ≤ report의 길이 ≤ 200,000 3 ≤ report의 원소 길이 ≤ 21 report의 원소는 "이용자id 신고한id"형태의 문자열입니다. 자기 자신을 신고하는 경우는 없습니다. 1 ≤ k ≤ 200, k는 자연수입니다. return 하는 배열은 id

2023년 7월 16일
·
0개의 댓글
·

2022 KAKAO BLIND RECRUITMENT k진수에서 소수 개수 구하기

배운점: Stringbuilder sb = new StringBuilder(); sb.reverse().toString() -> 단어 뒤집기 소수 판별시: i*i<=num 보다 i<Math.sqrt(num)이 더 빠르다 10진수 n을 k진법 변환시: temp = n%k + temp, n/=k

2023년 6월 12일
·
0개의 댓글
·

신고 결과 받기

문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다. 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다. 이용자의 ID가 담긴 문자열 배열 id_list, 각 이용자가 신고한 이용자의 ID 정보가 담긴 문자열 배열 report, 정지 기준이 되는 신고 횟수 k가 매개변수로 주어질 때, 각 유저별로 처리 결과 메일을 받은 횟수를 배열에 담아 return 하도록 solution 함

2023년 6월 6일
·
0개의 댓글
·
post-thumbnail

[2022 KAKAO BLIND RECRUITMENT] 파괴 되지 않은 건물

2022 KAKAO BLIND RECRUITMENT 파괴되지 않은 건물 문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] N x M 크기의 행렬 모양의 게임 맵이 있습니다. 이 맵에는 내구도를 가진 건물이 각 칸마다 하나씩 있습니다. 적은 이 건물들을 공격하여 파괴하려고 합니다. 건물은 적의 공격을 받으면 내구도가 감소하고 내구도가 0이하가 되면 파괴됩니다. 반대로, 아군은 회복 스킬을 사용하여 건물들의 내구도를 높이려고 합니다. 적의 공격과 아군의 회복 스킬은 항상 직사각형 모양입니다. 예를 들어, 아래 사진은 크기가 4 x 5인 맵에 내구도가 5인 건물들이 있는 상태입니다. ![](https://velog.velcdn.com/images/wodnr0710/post/8196bf5d-e55b-4660-97b7-b80079

2023년 5월 4일
·
0개의 댓글
·

[프로그래머스] 신고 결과 받기 / Level 1 / Java

링크 문제링크 문제 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다. 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다. 다음은 전체 유저 목록이 ["muzi", "frodo", "apeach", "neo"]이고, k = 2(즉, 2번 이상 신고당하면 이용 정지)인

2023년 4월 21일
·
0개의 댓글
·

프로그래머스) 주차요금계산 JS풀이

출처 > https://school.programmers.co.kr/learn/courses/30/lessons/92341 풀이

2023년 3월 30일
·
0개의 댓글
·

[2022 KAKAO BLIND RECRUITMENT] 사라지는 발판

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92345 이 문제는 백트래킹을 이용하여 풀 수 있습니다. 문제의 제한 조건이 5 이하로 굉장히 작기 때문에 백트래킹을 이용한 완전탐색방식으로 풀 수 있습니다. 이 문제에서 주의해야 할 부분은 최적의 플레이를 한다는 전제입니다. 이기는 플레이어는 최대한 빨리 승리를 해야 하고, 지는 플레이어는 최대한 오래 버텨야 하기 때문에 이겼을 때의 카운트와 졌을 때의 카운트를 따로 체크하여 이동한 이후 다른 상대방의 결과가 졌을 경우 자신은 현재 시점에서 이긴 것이므로 현재 시점의 이겼을 때의 카운트 값의 최솟값으로 최신화하고, 마찬가지로 다른 상대방의 결과가 이겼을 경우 자신은 현재 시점에서 진 것이므로 현재 시점의 졌을 때의 카운트 값의 최댓값으로 최신화하는 방식으로 값을 처리해주면 됩니다. 다음은 코드입니다. ![](https://velog.velcdn.com/

2023년 3월 29일
·
0개의 댓글
·

[2022 KAKAO BLIND RECRUITMENT] 파괴되지 않은 건물

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92344 이 문제는 누적합을 이용해서 풀 수 있습니다. 이 문제의 경우 단순 완전 탐색 방식으로 풀게 된다면 최대 1000X1000X250000 으로 시간 초과가 발생합니다. 따라서 이 문제는 반복문을 최소화하면서 문제를 풀 수 있는 방법을 사용해야 합니다. 이를 해결할 수 있는 방법이 누적합을 이용한 방법입니다. 매번 해당 범위를 탐색해서 값을 수정하는 대신 특정값만 값을 변경한 후 모든 값이 반영된 누적합 행렬을 계산한 후 이를 한번에 원본 행렬에 계산하는 방식으로 진행합니다. 이 때 (x1,y1)부터 (x2,y2)까지 n만큼의 변화는 (x1,y1)에 +n, (x1,y2+1)에 -n, (x2+1,y1)에 -n, (x2+1,y2+1)에 +n을 한 것과 같기 때문에 스킬의 개수만큼만 반복함으로 누적합 행렬을 계산할 수 있는 기저 행렬을 구할 수 있습니다. 이를

2023년 3월 28일
·
0개의 댓글
·

[2022 KAKAO BLIND RECRUITMENT] 양과 늑대

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92343?language=java 이 문제는 백트래킹을 이용하여 문제를 풀 수 있습니다. 주어진 제한 조건이 17로 작은 편이기 때문에 백트래킹을 이용해도 시간 초과가 발생하지 않게 됩니다. 이 때 check 배열을 3차원으로 현재 노드[늑대 개수] 로 설정하여 늑대 개수가 양 수보다 많을 때 리턴하는 방식으로 종료 시점을 설정했습니다. 다음은 코드입니다.

2023년 3월 27일
·
0개의 댓글
·

[2022 KAKAO BLIND RECRUITMENT] 양궁대회

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92342 이 문제는 백트래킹을 이용해서 풀 수 있습니다. 문제에서 반복을 진행하는 배열의 크기가 11이기 때문에 모든 조건을 하나씩 탐색해도 시간 초과가 발생하지 않습니다. 따라서 조건에 맞게 값을 하나씩 변경해가면서 최종 결과값과 비교를 통해 값을 구하면 되겠습니다. 다음은 코드입니다.

2023년 3월 25일
·
0개의 댓글
·

[2022 KAKAO BLIND RECRUITMENT] 주차 요금 계산

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92341 [이 문제는 프로그래머스에서 푼 문제입니다.] 이 문제는 문제에서 주어진 조건을 하나하나 구현해나가면 풀 수 있습니다. 우선 이 문제는 번호판이라는 것에서 착안하여 모든 차량의 종류가 0~9999 사이에 존재하는 것을 알 수 있습니다. 따라서 해당 배열의 인덱스로 번호판을 설정하고 들어올 때 시간을 체크하는 배열 하나, 총 시간을 체크하는 배열 하나 총 2개를 생성합니다. IN의 경우 들어올 떄 시간을 체크하는 배열에 저장하고, OUT의 경우 총 시간값을 최신화함과 동시에 들어올 때 시간값을 초기화합니다. 이 후 조건에 맞게 금액을 구하고, 나눌 때 나머지가 0이 아닐 경우 나눈 값에 1을 더해서 곱하는 방식으로 올림을 처리하면 되겠습니다. 다음은 코드입니다. ![](https://velog.velcdn.com/images/gale4739/post

2023년 3월 22일
·
0개의 댓글
·

[2022 KAKAO BLIND RECRUITMENT] k진수에서 소수 개수 구하기

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92335 [이 문제는 프로그래머스에서 푼 문제입니다.] 이 문제는 소수를 구하는 알고리즘과 진수를 구하는 방법에 대해 알고 있다면 쉽게 풀 수 있습니다. 전체적인 풀이는 다음과 같습니다. 주어진 n을 k진수로 만든다 --> String num = Integer.toString(n,k) 0을 기준으로 파싱한다 --> String[] arr = num.split("0") 파싱한 수를 소수인지 아닌지 체크한다 소수 체크 알고리즘은 크게 에라토스테네스의 체 방식과 2부터 루트n까지 나누어 나머지가 0이 아닌 수를 선택하는 방식이 있습니다. 이 문제의 경우 파싱된 수가 Int 범위를 넘을 수 있기 때문에 첫 번째 방식으로 진행하지 않고 두 번째 방식으로 진행했습니다. 다음은 코드입니다. ![](https://velog.velcdn.com/im

2023년 3월 17일
·
0개의 댓글
·

[2022 KAKAO BLIND RECRUITMENT] 신고 결과 받기

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/92334 [이 문제는 프로그래머스에서 푼 문제입니다.] 이 문제는 HashMap을 이용하여 풀 수 있습니다. 신고를 한 사람과 신고를 당한 사람의 인덱스를 HashMap에서 로 저장하여 배열에서 사람 이름을 찾으면 해당 인덱스를 가져오는 방식으로 문제의 조건을 처리하면 됩니다. 다음은 코드입니다.

2023년 3월 13일
·
0개의 댓글
·