Programming/Coding Test 23

leetcode 121. Best Time to Buy and Sell Stock 리트코드 121. 주식을 사고팔기 가장 좋은 시점 문제 풀이

책에서 다룬 리트코드 문제들을 풀이한 포스팅이다. 문제는 모두 리트코드에 출제된 문제들이며, 직접 풀었지만, 책에서 주는 힌트와 풀이 과정들을 참고한 경우가 많다. 이곳은 정리한 책에 나온 문제에 대한 목록과 해설을 정리한 공식 깃허브 페이지 이며, 다음 포스팅은 내가 푼 문제 풀이 목록을 정리해 놓았다. 문제 주식을 사고팔기 가장 좋은 시점 입력: 정수로 된 리스트 출력: 정수 문제 요약: 리스트 안의 숫자 2개를 골라서 그 차가 가장 큰 값을 출력 (순서 있음) 유의 사항: 유의사항을 보면 제시된 리스트의 길이와 숫자의 크기가 매우 크다. 효율성을 고려해야 한다. 생각 과정 기본적으로 가장 큰 수에서 가장 작은 수를 빼면 차이가 가장 크다. 그러나 리스트의 순서에 의미가 있기 때문에 그냥 정렬을 하면..

leetcode 1. Two Sum 리트코드 1. 두 수의 합 문제 풀이

책에서 다룬 리트코드 문제들을 풀이한 포스팅이다. 문제는 모두 리트코드에 출제된 문제들이며, 직접 풀었지만, 책에서 주는 힌트와 풀이 과정들을 참고한 경우가 많다. 이곳은 정리한 책에 나온 문제에 대한 목록과 해설을 정리한 공식 깃허브 페이지 이며, 다음 포스팅은 내가 푼 문제 풀이 목록을 정리해 놓았다. 문제 leetcode.com/problems/two-sum/ 입력: 정수 리스트, 정수 1개 출력: 정수 리스트 문제 요약: 리스트에서 두 개의 수를 더하면 target이 되는 원소의 인덱스를 리턴 유의 사항: 1. 두 원소의 값이 아니라 인덱스를 한다는 점 2. 조건을 만족하는 답이 딱 하나 3. 그리고 리스트의 길이 최대 1000개, 타겟 값 10**9 등 단위가 매우 크기 때문에 효율성에 신경을 ..

leetcode 5. Longest Palindromic Substring 리트코드 5. 가장 긴 팰린드롬 부분 문자열

책에서 다룬 리트코드 문제들을 풀이한 포스팅이다. 문제는 모두 리트코드에 출제된 문제들이며, 직접 풀었지만, 책에서 주는 힌트와 풀이 과정들을 참고한 경우가 많다. 이곳은 정리한 책에 나온 문제에 대한 목록과 해설을 정리한 공식 깃허브 페이지 이며, 다음 포스팅은 내가 푼 문제 풀이 목록을 정리해 놓았다. 문제 가장 긴 팰린드롬 부분 문자열 입력: 문자열 출력: 문자열 문제 요약: 주어진 문자열에서 찾을 수 있는 가장 긴 팰린드롬을 출력하기 유의 사항: 예를 보면 "a", "ac" 가 입력일 때 모두 "a"가 출력되었다. len(a)이 1이거나 같은 팰린드롬이 없을 때는 a[0]이 출력되는 듯 그리고, 문자열 내에 대문자/소문자 모두 들어가 있다고 하니까 .lower()를 통해 모두 소문자로 변환해줘야할..

leetcode 49. Group Anagrams 리트코드 49. 그룹 애너그램 문제 풀이

책에서 다룬 리트코드 문제들을 풀이한 포스팅이다. 문제는 모두 리트코드에 출제된 문제들이며, 직접 풀었지만, 책에서 주는 힌트와 풀이 과정들을 참고한 경우가 많다. 이곳은 정리한 책에 나온 문제에 대한 목록과 해설을 정리한 공식 깃허브 페이지 이며, 다음 포스팅은 내가 푼 문제 풀이 목록을 정리해 놓았다. 문제 그룹 애너그램 입력: 문자열로 된 리스트 출력: 문자열로 된 리스트의 리스트 문제 요약: 애너그램은 문자를 재배열하여 다른 뜻을 가진 단어로 바꾸는 것을 뜻한다고 한다. (출처: 파이썬 알고리즘 인터뷰) 예를 들어 'eat' 과 'tea' 와 같은 것이다. 유의 사항: strs[i].length == 0 인 경우도 포함된다. 즉, 아무것도 없는 빈 원소까지 고려해서 짜야 한다. 생각 과정 같은 애..

leetcode 937. Reorder Data in Log Files 리트코드 937. 로그 파일 재정렬 풀이

책에서 다룬 리트코드 문제들을 풀이한 포스팅이다. 문제는 모두 리트코드에 출제된 문제들이며, 직접 풀었지만, 책에서 주는 힌트와 풀이 과정들을 참고한 경우가 많다. 이곳은 정리한 책에 나온 문제에 대한 목록과 해설을 정리한 공식 깃허브 페이지 이며, 다음 포스팅은 내가 푼 문제 풀이 목록을 정리해 놓았다. 문제 리트코드 로그파일 재정렬 입력: list (string) 출력: list (string) 문제 요약: string이 원소인 리스트를 받아 정렬만 해서 다시 리스트로 출력한다. 그런데, 정렬의 기준이 조금 달라서 그 기준에 맞춰 정렬해야 한다는 점이 포인트 생각 과정 일단 각 원소를 띄어쓰기를 기준으로 쪼개서 리스트로 만든 다음, 각 로그의 첫번째 부분은 식별자라고 해서 식별자와 나머지로 나눠보았다..

leetcode 819. Most Common Word 리트코드 819. 가장 흔한 단어 문제 풀이

책에서 다룬 리트코드 문제들을 풀이한 포스팅이다. 문제는 모두 리트코드에 출제된 문제들이며, 직접 풀었지만, 책에서 주는 힌트와 풀이 과정들을 참고한 경우가 많다. 이곳은 정리한 책에 나온 문제에 대한 목록과 해설을 정리한 공식 깃허브 페이지 이며, 다음 포스팅은 내가 푼 문제 풀이 목록을 정리해 놓았다. 문제 leetcode.com/problems/most-common-word/ 입력 : string data type인 paragraph , list data type인 banned 출력: string data type 문제 요약: 가장 자주 등장하는 단어를 고른다. 단, 따로 뽑아 놓은 banned 리스트에 있는 단어는 제외하고. 생각 과정 1. 하나의 문장을 단어 단위로 쪼개고, (.split()) ..

프로그래머스 코딩테스트 lv 1. 완주하지 못한 선수 문제 풀이

문제 완주하지 못한 선수 생각 과정 입력 : 참여자 명단 리스트 / 완료자 명단 리스트 출력: 완주하지 못한 선수 문자열 주어진 조건에 의하면 단 한 명만 완주하지 않았기 때문에 참여자 명단 리스트에서 완료자 명단 리스트와 똑같은 것을 다 빼주면, 남는 1명을 찾으면 된다. 그런데 제한사항에서 참여자 리스트가 최대 10만 까지 가기 때문에 그냥 리스트를 for 반복문으로 계산하면 너무 오래 걸린다. 그리고 참여자의 이름에는 동명이인이 있다. 훨씬 속도가 빠른 딕셔너리로 {'사람이름' : '참가한 수'} 형태의 자료구조를 만들고, 완주자 리스트에 있으면 '참가한 수' 에서 한 명씩 빼주자. 제출 답안 def solution(participant, completion): par = {} #참여자 딕셔너리 만..

프로그래머스 코딩테스트 lv 1. 모의고사 문제 풀이

문제 : lv 1 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 입력 : 정답이 순서대로 들어있는 배열 answers 출력 : 가장 많은 정답을 맞힌 사람이 담긴 배열 answer 생각의 과정 세 사람은 아래의 배열이 계속 반복되는 방식으로 답을 입력한다. first = [1,2,3,4,5] second = [2,1,2,3,2,4,2,5] third = [3,3,1,1,2,2,4,4,5,5] 생각할 지점이 2개 있었다. 1. 문제의 갯수가 세 사람의 입력 배열보다 훨씬 길어지면 어떻게 할 것인가? 응답자 리..

투 포인터 two pointer 를 활용하여 문제 해결하기

투 포인터란? 배열 (정렬된 경우가 많음)에서 start과 end 두 곳에 포인터를 두고 순차적으로 조작하는 기법 일반적인 방식이 리스트에서 포인터를 하나 두고 타겟을 찾아나간다면, 이것 양 방향에서 범위를 좁히거나 넓혀 나가는 식으로 문제를 해결하는 것 장점은? for 문을 두 번 돌리면 O(n^2) 의 복잡도 투 포인터 방식으로 풀 수 있다면 O(n) 복잡도로 해결이 가능해짐 문제 예시 두수의 합 정수로 된 정렬된 리스트를 입력으로 받고 덧셈하여 target을 만들 수 있는 두 숫자의 인덱스를 출력하는 문제 (리트 코드의 문제는 정렬된 리스트가 아니지만, 여기서는 투 포인터 풀이를 위해서 정렬된 리스트도 조건 한정) Example Input: nums = [2,7,11,15], target = 9 O..

책 <파이썬 알고리즘 인터뷰> 정리

자료 구조, 알고리즘, 코딩 테스트에 대한 준비가 전혀 되어 있지 않은 나. 새로 시작한 K digital training 과정에 포함된 알고리즘과 코딩 테스트 과정 진도를 전혀 따라가지 못하고 있다. 잘은 모르지만 아마도 컴퓨터 공학을 대학에서 공부하는 친구들은 아마도 수업 시간에 좀 더 긴 시간을 가지고 공들여서 공부를 하는 부분인 것 같다. 나는 시간과 머리가 부족하지만, 아예 손을 놓고 있을 수 없으니 개발자 지인이 추천한 책을 일단 한 권 사서 보기 시작했다. 700페이지가 넘은 무지 두꺼운 책이다. 자료구조와 알고리즘, 문제 풀이가 주가 되지만, 머리 식힐 겸 읽어볼 만한 코딩 테스트 노하우, 이직 가이드 같은 내용도 있어 다행이 재미있게 보고 있다. 이제 겨우 읽기 시작했지만, 인상 깊거나 ..