프로그래머스 8

연속 부분 수열 합의 개수

자연수로 이루어진 연속 원형 수열의 합으로 만들 수 있는 수가 모두 몇 가지 인지 구하고 싶다는 철수 이다..원형 수열이란 일반 적인 수열에서 처음과 끝이 연결된 수열이다.. 원형 수열의 연속 부분 수열 합으로 만들 수 있는 수의 개수를.. 철수를 위해 구해보도록 하자.. 처음엔 원형 수열...? 뭐.. ? 라고 했지만 별건 없었다말 그대로 이어져 있기 때문에 연속 부분 수열 합을 구할때만약 3개의 합이 필요하다면 [7,4,1], [4,1,1], [1,1,9] 이렇게 가다가 [1,9,7], [9,7,4] 이런식으로 끊기지 않고 다시 앞의 원소를 참조하는 식의 특징이 있다는 것..!  길이가 n 이라면 각 1개의 합으로 구한 수열 부터, n개의 합으로 구한 수열을 모두 구한 후, 유니크한 수만 뽑아내어 개..

예상 대진

N 명이 참가하는 게임 토너먼트가 개최 되었다 대진 방법은 1-2번 3-4번... N-1번 - N번 식으로 짝을 지어 대진 한다 1-2에서 1이 이기고 3-4 에서 4가 이기면 1은 1번, 4는 2번 이런식으로 다시 번호를 매긴다고 한다 처음 라운드에서 A번 참가자가 경쟁자로 생각하는 B 번 참가자를 몇 라운드에서 만날지 궁금하다고 한다.. 만날때까지 A,B 는 계속 이긴다는 것을 전제로 한다! N 은 2의 지수 승으로 주어져서 부전승은 없다! 대진 방법을 보면.. 두명씩 순서대로 짝을 짓는다 결국 계속 이긴다면 내 번호는 계속 /2 가 되는 것이라는게 보였다! 그리고.. A,B 가 만나는 경우는 번호가 1이 차이가 나면서도 2번 3번 이런식은 안되고 큰 번호가 짝수이고 작은 번호가 홀수인 경우면 된다!..

구명보트

무인도에 갇힌 사람들을 구하려고 하는데, 사람들의 무게도 다르고 구명보트도 무게제한이 있고 최대 2명 까지 가능하다 사람들 무게 리스트를 받아서 구명보트를 최소한으로 쓸 때, 구명보트 수를 결과값으로 내야하는 문제! 음.. 우선 최대 2명이고, 제한이 있는 구명보트 무게라고 하니.. 두 배열의 원소를 각 곱해서 전체 합이 가장 작은 경우를 구해라는 문제가 생각났다.. 결국 무거운 사람 둘을 엮으면 구명보트 제한으로 2개가 나갈것이지만, 무거운 사람 + 가벼운 사람으로 엮으면 1개만으로 가능한 경우가 많을 것.. 처음부터 가벼운+가벼운 으로 엮으면 뒤에는 무거운 사람들은 모두 1개씩 타고 나갈지도 모른다..! 그럼 결국 가벼운+무거운 의 짝으로 제한을 체크하고, 안되면 무거운 사람 1개 먼저 타세요! 해야..

카펫

중앙은 노란색, 테두리 1줄은 갈색은 카펫을 사려고 하는데 각 노란색, 갈색의 격자 개수는 기억하지만 전체 카펫의 크기를 기억 못한다고 한다.. 노란색, 갈색 격자 개수를 받아서 전체 카펫의 가로 세로 크기를 구해야 하는 문제 이다! 카펫은 예시는 이렇다! 중간은 노란색, 테두리 한줄은 갈색! brown yellow return 10 2 [4,3] 8 1 [3,3] 24 24 [8,6] 입출력 예는 이렇다 흠.. 카펫의 특징을 찾아보면... 우선 brown + yellow 가 총 격자의 갯수.. 즉 가로x세로 일것이다 그리고 가로길이는 세로길이보다 같거나 길다고 한다 그리고 갈색은 테두리 "1줄" 만 차지 ( 가로, 세로 위아래 양옆.. 각 2줄 ) 하므로 가로 m, 세로 n 이라고 했을때 카펫이 m*n..

피보나치 수

피보나치 수의 값을 구하고 1234567 로 나눈 나머지 결과 값을 구하는 문제! 우선 피보나치 수 라는 것은.. F(0)=0, F(1)=1 이며 1 이상의 n 에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 이다! 보통 피보나치 수열을 처음 코딩으로 배울때는 재귀함수가 많이 쓰이긴 하는데.. 프로그래머스에서 재귀함수를 이용해서 풀면 '시.간.초.과' 에러가 난다..! 그래서 피보나치 수열의 특징을 살펴보니.. (Fibo 라고 부르겠답) Fibo(7) 를 예시로 보면! Fibo(7) = Fibo(6) + Fibo(5) Fibo(6) = Fibo(5) + Fibo(4) Fibo(5) = Fibo(4) + Fibo(3) Fibo(4) = Fibo(3) + Fibo(2) Fibo(2) = ..

도넛과 막대 그래프

2024 KAKAO WINTER INTERNSHIP 문제 도넛 모양 그래프, 막대 모양 그래프, 8자 모양 그래프들이 있습니다. 이 그래프들은 1개 이상의 정점과, 정점들을 연결하는 단방향 간선으로 이루어져 있습니다... 그래프 용어를 오랜만에 보아서 조금 당황했었다 크기가 n 인 세가지 종류 그래프들이 있을 수 있고 각각 특징이 있다. 어떤 크기, 어떤 종류의 그래프가 있을지 모르고 각 그래프 정점마다 서로 다른 번호가 매겨지며 생성되는 그래프 수의 합은 2 이상! 이때, 새로운 번호가 매겨진 새 정점 하나가 추가 된다. 이 정점은 다른 그래프들의 임의의 정점 하나로 향해 연결되는 간선이 만들어진다! 간선 정보를 담은 2차원 배열이 주어지고, 이 정보로 어떤 그래프가 몇개 있는지, 새로 생긴 정점은 몇..

가장 많이 받은 선물

2024 KAKAO WINTER INTERNSHIP 문제 선물을 직접 전하기 힘들때 카카오톡 선물하기 기능을 이용해 축하 선물을 보낼 수 있습니다. 당신의 친구들이 이번 달 까지 선물을 주고받은 기록을 바탕으로 다음 달에 누가 선물을 많이 받을지 예측하려고 합니다... 로 시작하는 문제이다. 주고 받은 것을 체크해서 선물 지수(선물 준 수 - 선물 받은 수)를 구하고, 상대와 비교하여 많이 준 쪽이 다음달에 상대에게 선물을 받는다는.. 기브앤테이크가 확실한 문제 였다..! 필요한 최종 결과값은 다음달에 가장 많은 선물을 받은 사람이 몇 개를 받느냐..! 아무튼..! 우선 어떤 값을 구해야 할지 체크 해보았다. 서로 서로 매칭이 필요하고, 결국 선물을 받는 경우를 보면 되니까.. 1. 상대 보다 많이 준 ..