[LeetCode] Word Search
문제링크 문제 설명 Given an m x n grid of characters board and a string word, return true if word exists in the grid. The word can be constructed from letters o...
N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5g 기지국은 4g 기지국보다 전달 범위가 좁아, 4g 기지국을 5g 기지국으로 바꾸면 어떤 아파트에는 전파가 도달하지 않습니다.
예를 들어 11개의 아파트가 쭉 늘어서 있고, [4, 11] 번째 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 만약 이 4g 기지국이 전파 도달 거리가 1인 5g 기지국으로 바뀔 경우 모든 아파트에 전파를 전달할 수 없습니다. (전파의 도달 거리가 W일 땐, 기지국이 설치된 아파트를 기준으로 전파를 양쪽으로 W만큼 전달할 수 있습니다.)
이때, 우리는 기지국을 최소로 설치하면서 모든 아파트에 전파를 전달하려고 합니다. 위의 예시에선 최소 3개의 아파트 옥상에 기지국을 설치해야 모든 아파트에 전파를 전달할 수 있습니다.
아파트의 개수 N, 현재 기지국이 설치된 아파트의 번호가 담긴 1차원 배열 stations, 전파의 도달 거리 W가 매개변수로 주어질 때, 모든 아파트에 전파를 전달하기 위해 증설해야 할 기지국 개수의 최솟값을 리턴하는 solution 함수를 완성해주세요
N | stations | W | answer |
---|---|---|---|
11 | [4, 11] | 1 | 3 |
16 | [9] | 2 | 3 |
입출력 예 #1 문제의 예시와 같습니다
입출력 예 #2
통신사에 근무중인 제게 흥미로운 문제여서 클릭해 버렸습니다ㅋㅋㅋㅋ
물론 5G 기지국 설치에 대한 로직을 이렇게 단순히 할 순 없겠지만… 이러한 최적화 문제는 현업에서도 다양한 로직을 개발하고 고민하고 계신걸로 압니다. ㅎㅎ
입력 N의 범위를 보아하니, 얼마나 효율적으로 푸느냐가 중요할 것 같습니다.
저는 station들이 오름차순으로 정렬이 이미 되어 있다는 점에서 다음과 같은 룰을 세웠습니다.
지금 위치를 pos 라고 잡았을 때,
station 범위 밖의 왼쪽에 pos가 위치해 있는 경우 or 가장 큰 station의 범위 밖 오른쪽에 있는 경우
-> 기지국을 새로 설치해야 합니다.
-> answer += 1 해주고, 새로 설치한 기지국의 범위 +1 로 pos를 옮겨 줍니다.
-> pos += (2*w+1)
현재 station의 범위 안에 pos가 위치한 경우
-> pos를 현재 station 범위 +1 로 이동
station 범위 밖 오른쪽에 위치하는 경우
-> 다음 station을 대상으로 가리킵니다.
-> station_idx += 1
위 그림과 같이 Rule을 적용하면, 문제에서 주어진 예시상황이 어떻게 전개되는지도 이미지의 오른쪽에서 확인할 수 있습니다.
이제 이를 코드로 구현하면 다음과 같습니다.
def solution(n, stations, w):
answer = 0
station_idx = 0
pos = 1
while pos <= n:
# station 범위 밖의 왼쪽일 때
if station_idx == len(stations) or pos < stations[station_idx]-w:
pos += (2*w + 1)
answer += 1
# station 범위 안일 때
elif stations[station_idx]-w <= pos <= stations[station_idx]+w:
pos = stations[station_idx]+w+1
station_idx += 1
# station 범위 밖의 오른쪽일 때
elif stations[station_idx]+w < pos:
station_idx += 1
return answer
문제링크 문제 설명 Given an m x n grid of characters board and a string word, return true if word exists in the grid. The word can be constructed from letters o...
문제링크 문제 설명 Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent. Return the answe...
문제링크 문제 설명 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5g 기지국은 4g 기지국보다 전달 범위가 좁아, 4g 기...
문제링크 괄호 제거 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 128 MB 2016 680 ...
문제링크 문제 설명 Given a string s, return the longest palindromic substring in s. Example 1: Input: s = "babad" Output: "bab" Note: "aba" is also a valid ans...
문제링크 문제 설명 개발자를 희망하는 죠르디가 카카오에 면접을 보러 왔습니다. 코로나 바이러스 감염 예방을 위해 응시자들은 거리를 둬서 대기를 해야하는데 개발 직군 면접인 만큼 아래와 같은 규칙으로 대기실에 거리를 두고 앉도록 안내하고 있습니다. 대기실은 5...
문제링크 문제 설명 개발팀 내에서 이벤트 개발을 담당하고 있는 “무지”는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 사용자라는 이름으로 목록을 만들어서 당첨 처리 시 제외하도록 이벤트 당첨자...
문제링크
문제링크 문제 설명 데이터 처리 전문가가 되고 싶은 “어피치”는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되...
문제링크 Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpo...
문제링크 Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it can trap after raining. Exam...
문제링크 Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays. The overall run time c...
문제링크 Given an unsorted integer array nums, find the smallest missing positive integer. You must implement an algorithm that runs in O(n) time and uses co...
문제링크 나무 자르기 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 256 MB 72052 20773 ...
문제링크 문제 설명 카카오TV에서 유명한 크리에이터로 활동 중인 죠르디는 환경 단체로부터 자신의 가장 인기있는 동영상에 지구온난화의 심각성을 알리기 위한 공익광고를 넣어 달라는 요청을 받았습니다. 평소에 환경 문제에 관심을 가지고 있던 “죠르디”는 요청을 받아들였고 광고효과...
문제링크 Easy You are climbing a staircase. It takes n steps to reach the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you ...
문제링크 문제 설명 Finn은 편의점에서 야간 아르바이트를 하고 있습니다. 야간에 손님이 너무 없어 심심한 Finn은 손님들께 거스름돈을 n 원을 줄 때 방법의 경우의 수를 구하기로 하였습니다. 예를 들어서 손님께 5원을 거슬러 줘야 하고 1원, 2원, 5원이 있다면 ...
문제링크 A robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below). The robot can only move either down or right at any p...
문제링크 Medium Given an integer array nums, return all the triplets [nums[i], nums[j], nums[k]] such that i != j, i != k, and j != k, and nums[i] + nums[j] + ...