본문 바로가기

Algorithm75

[2018 KAKAO BLIND - JavaScript] 비밀지도 문제 출처 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 공백(" ) 또는벽(#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 지도 1과 지도 2라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. 지도 1과 지도 2는 각각 정수 배열로 암호화되어 있다. 암호화된 배열은 지도의 각 가로줄에서 벽 부분을 1, 공.. 2020. 1. 5.
[JavaScript] 시험성적 평균과 등급 구하기 문제 출처 구름이는 자신의 국어 수학 영어 3 과목의 시험 성적을 확인했습니다. 평균과 등급을 알고 싶어하는 구름이를 도와줄 수 있는 프로그램을 작성하십시오. 평균은 소수점 2 번째 자리까지만(3 번째 자리에서 반올림) 출력하며 등급은 평균 90점 이상일 경우 A, 90점 미만 80점 이상인 경우 B, 80점 미만 70점 이상이 C, 70점 미만 60점 이상이 D이고 60점 미만으로는 F입니다. 입력 국어 영어 수학 순으로 점수 입력(각 과목 당 100점 만점) 출력 평균, 등급 입/출력 예시 입력 출력 100 100 98 99.33 A 100 100 100 100.00 A 완성 코드 const readline = require("readline"); const rl = readline.createInt.. 2020. 1. 4.
[Java] 의좋은 형제 문제 출처 조선시대 수도 한양에서 한참 떨어진 곳에 위치한 한 고을에는 의좋은 형제가 살았다. 서로를 끔찍이 아낀다고 소문난 진우와 선우 형제는 항상 서로에게 퍼주지 못해 안달이 난 상태였다. 의리있는 만큼 성실했던 두 형제는 열심히 일하여 번 돈으로 식량을 어마어마하게 비축하여 가지고 있었다. 그러던 어느날, 진우는 밤 중에 몰래 집을 나와 자신의 식량 절반을 선우에게 가져다 주었다. 이 사실을 안 선우는 다음날 밤, 몰래 집을 나와 마찬가지로 자신의 식량 절반을 진우에게 가져다 주었다. 가지고 있는 식량의 양이 홀수라서 반으로 나눌 수 없는 경우, 그 식량을 통째로 넘겨준다. 만약 처음 두 형제가 모두 식량을 100씩 가지고 있다면 셋째 날까지의 변화는 다음과 같다. 처음 상태: 진우 100, 선우 .. 2020. 1. 4.
[Java] 태민이의 취미 문제 설명 태민이는 주사위를 수집하는 취미를 가지고 있습니다. 주사위의 모양과 색깔은 각기 다르며, 크기 또한 다릅니다. 태민이는 지금까지 모은 N개의 주사위가 너무 난잡하게 보관해놓고 있어서 정리를 결심했습니다. 그래서 우선 N개의 주사위를 크기 순서대로 정리해보려고 마음 먹었습니다. 그렇게 주사위를 순서대로 정렬시켜보니 각 변의 길이가 1부터 N까지 모두 있는 것을 알게되었습니다. 이 사실이 매우 신기했던 태민이는 이 주사위들의 부피의 합은 어떻게 될지 궁금해졌습니다. 태민이가 현재 가지고 있는 모든 주사위의 부피의 합은 얼마일까요? 태민이의 궁금증을 풀어주세요! 입력 첫 줄에 정수 N이 주어집니다. (단, )) 출력 변의 길이가 1부터 N까지인 주사위들의 부피의 합을 출력합니다. 이때, 수가 너무 .. 2020. 1. 3.
[JavaScript] 369 게임 문제 설명 여름을 맞아 친구들과 여행을 간 구름이는 369게임을 하게 됐다. 369게임은 여러명이 둘러앉아서 숫자를 하나씩 돌아가며 말하다가 숫자에 3,6,9가 포함된 숫자가 되면 박수를 치는 게임이다. (이 때, 해당 숫자에 3,6,9가 여러개이면 박수를 개수만큼 쳐야한다. 예를 들어 33, 36의 경우 박수를 두 번 쳐야 한다) 게임이 끝난 숫자 N이 주어졌을 때, N 이전까지 박수를 친 횟수를 구하여라. 입/출력 예시 입력 출력 10 3 35 16 Thinking 1 const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); const .. 2020. 1. 3.
[2019 KAKAO BLIND - JavaScript] 실패율 문제 설명 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변.. 2020. 1. 2.
가장 큰 수 · 문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. · 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. · 입출력 예 numbers return [6.. 2019. 6. 15.
체육복 · 문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함.. 2019. 6. 5.
줄 서는 방법 · 문제 설명 n명의 사람이 일렬로 줄을 서고 있습니다. n명의 사람들에게는 각각 1번부터 n번까지 번호가 매겨져 있습니다. n명이 사람을 줄을 서는 방법은 여러가지 방법이 있습니다. 예를 들어서 3명의 사람이 있다면 다음과 같이 6개의 방법이 있습니다. [1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 1, 2] [3, 2, 1] 사람의 수 n과, 자연수 k가 주어질 때, 사람을 나열 하는 방법을 사전 순으로 나열 했을 때, k번째 방법을 return하는 solution 함수를 완성해주세요. · 제한 사항 n은 20이하의 자연수 입니다. k는 n! 이하의 자연수 입니다. · 입출력 예 n k result 3 5 [3, 1, 2] · 입출력 예 설명 입출력 예 #1 문제의 예.. 2019. 6. 4.