목록Computer Science (26)
고딩왕 코범석
문제는 여기! 이 문제를 맨 처음에 봤을 때는, 열쇠를 자물쇠에 꽂을 때 자물쇠 영역에 벗어난 부분은 어떻게 처리해야 하는지에 대해 고민이었는데, 짱동빈 형님은 기존의 자물쇠에 가로, 세로를 각각 key 사이즈 * 2 만큼 자물쇠 사이즈를 늘려서 하나씩 꽂는 방법으로 풀이하셨다. 생각외로 아이디어가 간단했는데? 나도 문제 풀때는 기가막힌 아이디어 보다는 아기자기한 꼼수를 쓰는 것도 괜찮겠다 싶었던 문제였다. 주의사항 및 제한사항 key와 lock은 정사각형이며, 각각의 크기는 3 이상 20 이하이다. key의 사이즈는 항상 자물쇠의 사이즈보다 같거나 작습니다. 풀이전략 우선, 시간 복잡도를 예상했을 때, 열쇠 크기 * 2 + 자물쇠 크기를 해주면 (20 * 2 + 20) ** 2 = 3,600 열쇠는 회..
문제는 여기! 해당 검색키워드가 접두사 혹은 접미사에 '?'가 붙어있다. 검색키워드에 맞는 가사 단어 갯수를 리턴하는 문제이다. '?'를 어떻게 처리하는지가 관건인 문제! 제한사항 및 주의사항 가사 단어의 갯수는 1
문제는 여기! 입력된 문자열을 시, 분, 초로 파싱하는 것, 각 초 구간의 처리량을 얼마나 효율적으로 분석하냐가 관건인 문제였다. 제한사항 및 주의사항 lines 리스트의 크기는 2,000개 까지다. S = 응답 완료 시간, 2016-09-15 hh:mm:ss.sss 형식 2016-09-15는 필요 없다. T = 처리시간, 0.1s, 2s, 2.0s 등의 형식으로 주어진다. 문제에서 나온 예시 처럼 '2016-09-15 03:10:33.020 0.011s'는 03:10:33.010 ~ 03:10:33.020 동안 이뤄진 것이다. 시작시간과 응답 완료 시간을 포함하는 것에 유의하자. 시작시간 = S - T + 0.001s 풀이전략 lines를 시작시간, 응답 완료시간으로 분해하자. lines[i]를 spl..
문제는 여기! 이번 문제는 꽤 어려웠다. 이 문제를 예전에 풀었던 적이 있어도 막상 다시 풀려고 하니까 기억이 나지 않아서 다른 분의 풀이를 보았다. 그 코드를 기반으로 어떻게 동작하는지 정리하고 풀어보았다. 제한사항 및 유의사항 n
[프로그래머스] 매칭 점수, Python3 문제는 여기! 이번 문제는 정규 표현식을 통해 문제에서 원하는 문자열을 도출하는 과정이 어려워서 다른 분들의 코드를 참조했다. 제한사항 및 유의사항 기본점수 : 해당 웹페이지에서 검색된 키워드의 갯수(대소문자 무시) 외부 링크 수 : 해당 웹페이지에서 다른 외부 웹페이지로 연결된 링크 갯수 링크점수 : 해당 웹페이지에서 링크가 걸린 다른 웹페이지의 기본점수 / 그 다른 웹페이지의 외부링크 수 이 부분이 조금 헷갈렸다. 문제의 이미지를 빌려보자면 B 웹페이지와 C 웹페이지는 A 웹페이지를 외부 링크로 참조했다. 그럼, A 웹페이지의 링크 점수는 (B의 기본점수 / B의 외부링크수) + (C의 기본점수 / C의 외부링크수) 가 되겠다. 우리가 원하는 매칭 점수는 기..
[프로그래머스] 징검다리 건너기, Python3 문제 링크! 제한사항 및 유의사항 stones 배열의 크기는 1 ~ 200,000 stones 배열의 각 원소의 크기는 1 ~ 200,000,000 위의 두가지 때문에 모든 경우의 수를 체크하기엔 효율성 채점에서 시간 초과 판정을 받을 것이다. 친구들은 k를 넘은 칸 만큼 건널 수 없다. k는 1 이상 stones길이 이하 자연수 풀이전략 시간 초과 판정을 피하기 위해 이분 탐색으로 접근하자 접근 시 탐색 기준값(mid)의 의미는 징검다리를 건널 수 있는 친구들의 수를 의미한다. start = 1, end = max(stones) start = 1인 이유 : 모든 stones[i] >= 1 임을 만족하므로 mid = (start + end) // 2 매번 ..
[프로그래머스] 보석 쇼핑, Python3 [프로그래머스] 보석 쇼핑 문제 제한사항 어피치는 우선 일렬로 보석들을 한줄에 싹 쓸어담아 구매한다. 배열의 구간을 띄워서 사지 않는다! solution의 매개변수인 gems(보석 진열 배열)의 크기가 100,000 까지이다. 100,000의 크기를 하나씩 일렬로 검사하는 것은 O(n * n)이므로 시간 초과가 발생할 것이다. 풀이전략 먼저, 보석의 종류를 파악하기 set(gems)를 활용해 보석의 종류 수를 파악하기 만약 종류가 1가지일 경우는 [1, 1] / 종류의 수와 배열의 크기가 같다면 [1, len(gems)]를 바로 리턴쳐주자. dict 선언하기 { "보석" : 해당 보석의 갯수 } 의 형태 start, end 포인트를 지정하자. start, end..
이번 포스팅에서는 2020 카카오 인턴십 코딩테스트 문제 중 두 번째 문제인 수식 최대화 문제에 대해 풀이를 해볼 것이다. 문제 설명 제한 사항 테스트케이스 문제는 여기로! 우선 나는 이 문제를 어떻게 풀지 몰라 감이 안잡혀 다른 분의 코드를 참조했다.거의 베낀 것이나 다를바 없다 그치만 코드를 하나씩 살펴보면서 재귀에 대한 이해, 재귀를 사용할 때 코드의 간결함을 보고 많이 배운 코드였다. 풀이 방법 priorities 라는 배열을 선언했다. 이곳에는 연산자들의 우선순위를 담아두었다. priorities에 있는 우선순위들을 하나씩 대입하여 해당 연산의 결과를 얻어낸다. 연산 결과를 절댓값으로 바꾸어 최댓값을 비교하고 정답을 리턴한다. def get_result(n, priority, expression..