본문 바로가기

분류 전체보기

(351)
[고득점 kit]_탐욕법_#5. 섬 연결하기 (문제 설명) n개의 섬 사이에 다리를 건설하는 비용(costs)이 주어질 때, 최소의 비용으로 모든 섬이 서로 통행 가능하도록 만들 때 필요한 최소 비용을 return 하도록 solution을 완성하세요. 다리를 여러 번 건너더라도, 도달할 수만 있으면 통행 가능하다고 봅니다. 예를 들어 A 섬과 B 섬 사이에 다리가 있고, B 섬과 C 섬 사이에 다리가 있으면 A 섬과 C 섬은 서로 통행 가능합니다. 제한사항 섬의 개수 n은 1 이상 100 이하입니다. costs의 길이는 ((n-1) * n) / 2이하입니다. 임의의 i에 대해, costs[i][0] 와 costs[i] [1]에는 다리가 연결되는 두 섬의 번호가 들어있고, costs[i] [2]에는 이 두 섬을 연결하는 다리를 건설할 때 드는 비용입..
[고득점 kit]_탐욕법_#4. 구명 보트 ( 문제 설명 ) 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다. 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작성..
[고득점 kit]_탐욕법_#3. 큰 수 만들기 (문제 설명) 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24]를 만들 수 있습니다. 이 중 가장 큰 숫자는 94입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 number는 2자리 이상, 1,000,000자리 이하인 숫자입니다. k는 1 이상 number의 자릿수 미만인 자연수입니다. 입출력 예numberkreturn "1924" 2 "94" "12..
코딩 테스트_3. 해당 단어를 원하는 단어로 변환 ( 문제 ) 입력 1. "this is {template} {template} is {state}" 입력 2. [["template", "string"], ["state", "changed"]] 입력 2에 따라 입력 1의 문자열을 template -> string, state -> changed로 바꿔서 리턴해주면 됩니다. 결과 "this is string string is changed" 여기서 해당 배열 찾아서 바꿔주면 되겠네 할 수 있습니다. 문제는..! [["template", "string"], ["state", "changed"], ["changed", "template"]] 입력 2로 이와 같은 상황이 주어질 때입니다. 유니온-파인드 알고리즘을 이용하면 비교적 쉽게 해결할 수 있습니다. 유니..
코딩 테스트_2. 가장 많이 반복되는 문자열들 제거 ( 문제 ) ex1) abcabcdefabc 위와 같은 문제가 주어질 때, abc라는 문자열이 3번 반복된다 물론 a도 3번 ab도 3번 기타 다른 집한구들도 반복된다 하지만, 가장 긴 문자열을 가지고 가장 많이 반복되는 문자열은 abc이다. 이럴 때 abc를 삭제하고 남은 문자열을 리턴한다. 결과: def ex2) "abxdeydeabz" 위와 같은 문자열이 주어질 경우, ex1의 경우로 유추해서 추려내면 ab 2번, de 2번이 나옵니다. 이렇게 조건에 의해 동률일 경우는 둘다 삭제합니다. 결과: xyz ( 문제 해설 ) (목표) 문자열 길이가 1~ 전체길이 // 2까지 획수를 구해야 합니다. 1. for문을 돌면서 문자열 길이에 따라 처음 나올 경우 해당 문자열을 키로 가지는 value를 1로 설정..
16. 비트마스크 이용 팁 예시) 1 ~ 19까지 19개의 추가 서비스 목록 있다고 할 때 이를 간단하게 구현하는 방법 by 비트 마스크 20개의 모든 서비스를 받는다고 할 때 fullSerive = (1
코딩 테스트_1. 방향전환 ( 문제 ) 다음과 같이 "EEESEEEEEENNNN" 방향이 주어집니다. ( E: 동 N: 북, S: 남, W: 서 ) 방향 하나당 100M이며 1의 시간이 걸립니다. 해당 예시로 들면 E방향으로 300M 후에 S로 움직이니 오른쪽으로 움직이는 겁니다 다시 한 번 E로 움직이니 왼쪽으로 움직이는 거지요. 그리고 6번 움직이는데,, 5번 이상 같은 방향으로 움직여야 된다고 판단될 시 100M씩은 내비게이션은 지시를 안 해도 됩니다 ( 문제 풀 때 이부분을 못 봐서 문제를 제대로 못 품 ) 그렇기 500M 움직인 이후에 다시 N방향으로 가니까 왼쪽으로 움직이게 되는 거죠. 결론적으로 출력 결과는 'Time 0:Go straight 300m and turn right', 'Time 3:Go straight ..
[고득점 kit]_탐욕법_#2. 조이스틱 ( 문제 설명 ) 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서) ▶ - 커서를 오른쪽으로 이동 (마지막 위치에서 오른쪽으로 이동하면 첫 번째 문자에 커서) 예를 들어 아래의 방법으로 "JAZ"를 만들 수 있습니다. - 첫 번째 위치에서 조이스틱을 위로 9번 조작하여 J를 완성합니다. - 조이스틱을 왼쪽으로 1번 조작하여 커서를 마지막 문자 위치로 이동시킵니다. - 마지막 위치에서 조이스틱을 아래로 ..

728x90