본문 바로가기

전체 글

(123)
[ 프로그래머스 ] leve 4 - 3 x n 타일링 ( Java ) 연습문제 3xn타일링 이 문제를 풀면서 프로그래머스에서는 static변수는 정말 유용하지 않구나를 깨달았다. 다른 swea나 백준을 풀때처럼 static변수에 5000까지를 모두 계산해서 넣어둘 생각을 하였는데, 음.. 매번 새로 class를 생성하는지 static의 의미가 전혀 없이 모두 시간초과 가 발생하였다.. 그래서 불러올때마다 계산하는 방법으로 코딩하니 통과...마음이 아프다... 나는 무엇을 위해 효율성을 생각했는가. 그림 그려서 차근차근 푸니 f(n) = 3*f(n-2) + 2*f(n-4) + .....+ 2*f(2) +2 라고 생각하면 된다.. 아래는 문제 설명이다.. 더보기 문제 설명 가로 길이가 2이고 세로의 길이가 1인 직사각형 모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세..
[ 프로그래머스 ] Level 4 4단 고음 ( Java ) 2017 카카오코드 예선 문제 설명 문제 설명 4단 고음 I'm in my dream~↗ ~↗ ~↗ IU는 본인의 장기인 3단 고음으로 유명하다. 그러던 그녀가 어느 날 4단 고음을 성공했고 그녀의 고음은 학계에서 연구가 될 만큼 유명해졌다 [1]. [1] 견두헌, 배명진. “아이유의 고음 발성 특성 분석”, 한국음향학회, 2011년 춘계학술대회 학술발표논문지 폭포 밑 득음 수련을 하던 어느 날, 그녀는 4단 고음이 끝이 아님을 깨달았다. 3단 고음 직후 3단 고음을 연이어하거나, 3단 고음 중 다시 3단 고음을 해서 음높이를 올리는 방법이다. 어떤 순서로 3단 고음을 했는지에 따라 최종 음높이가 달라지기 때문에, 연속 3단 고음을 연습할 때마다 그 결과를 기록으로 남기기로 했다. 3단 고음은 다..
[ 프로그래머스 ] Level4 - 지형 이동 (Java : Prim 알고리즘 ) 그래프 탐색 아는 알고리즘이라고 사실 크루스칼이랑 프림이 있지만, 나는 프림이 편해서 항상 프림만 쓴다... 사실 프림 알고리즘에 대해서 학습한지도 얼마 되지 않았지만 한번 외워서 코딩하니까 되더라..! [ Summer/Winter Coding(2019) ] 지형이동 - Level 4. 문제 설명 N x N 크기인 정사각 격자 형태의 지형이 있습니다. 각 격자 칸은 1 x 1 크기이며, 숫자가 하나씩 적혀있습니다. 격자 칸에 적힌 숫자는 그 칸의 높이를 나타냅니다. 이 지형의 아무 칸에서나 출발해 모든 칸을 방문하는 탐험을 떠나려 합니다. 칸을 이동할 때는 상, 하, 좌, 우로 한 칸씩 이동할 수 있는데, 현재 칸과 이동하려는 칸의 높이 차가 height 이하여야 합니다. 높이 차가 height 보다 많..
[백준] 16234번 인구 이동 - java 문제 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다. 오늘부터 인구 이동이 시작되는 날이다. 인구 이동은 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다. 국경선을 공유하는 두 나라의 인구 차이가 L명 이상, R명 이하라면, 두 나라가 공유하는 국경선을 오늘 하루동안 연다. 위의 조건에 의해 열어야하는 국경선이 모두 열렸다면, 인구 이동을 시작한다. 국경선이 열려있어 인접한 칸만을 이용해 이동할 수 있으면, 그 나라를 오늘 하루 동안은 연합이라고 ..
[ Programmers ] level 2 - 타겟 넘버 ( python ) 코딩테스트 풀이 프로그래머스 level 2 문제 타겟 넘버 - 깊이/너비 우선 탐색(DFS/BFS) 문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다...
[ 프로그래머스 ] level 2 카펫 - 파이썬 프로그래머스 코딩테스트 연습 > 완전탐색 > 카펫 > python3 [+2] level 2인데 쉬운 문제가 나왔다. 다들 쉽게 풀어서인지 +2밖에 안해주더라.. [ 문제 설명 ] Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 빨간색으로 칠해져 있고 모서리는 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 빨간색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 빨간색 격자의 수 red가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 갈색 격자의 수 brown은 8 이상 5,000 ..
[ 프로그래머스 ] level 2 큰 수 만들기 - 파이썬 프로그래머스 level 2 탐욕법(Greedy) 문제를 설명한다. 코딩테스트 연습은 매번 python3를 기준으로 작성한다. [ 문제 설명 ] 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 number는 1자리 이상, 1,000,000자리 이하인 숫..
[ 프로그래머스 ] 구명 보트 - level 2 ( 파이썬 ) 프로그래머스 코딩테스트 연습 구명보트 문제 : level 2 탐욕법 ( Greedy ) 획득 점수 : +13 구명보트 문제 설명 : 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다. 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어..