y0ngjaenious / 3Q-per-week

1 stars 0 forks source link

3문제 인증 - 유승수 #6

Open seungsu3579 opened 3 years ago

seungsu3579 commented 3 years ago

2021년 1월 2주차 (링크)

문제

1. 조이스틱(Link)

분류: Greedy 난이도: Level2 (Programmers) 풀이 링크: Python 한줄평: 조잡한 문제인거같다. 내가 잘못푼거일수도 있지만 프로그래머스에서 제공하는 테스트케이스에 빠진 엣지케이스가 존재한다. (ex . AABAABAAAAAABAAABAA >> 20 / 하지만 이전에 통과한 다른사람의 코드를 실행했을 때 22가 나옴;;;) 진짜 괜찮은 풀이 있으면 소개해주세요ㅠㅜ

2. 단속카메라(Link)

분류: Greedy 난이도: Level3 (Programmers) 풀이 링크: Python 한줄평: 제일 많이 루트를 체크할 수 있는 것부터 cctv를 설치하면 풀수 있지만 일반적인 과정으로는 효율성 검사에서 실패한다. 2번의 코드 수정으로 개선되었지만 여전히 효율성 검사에서는 실패..ㅠㅜ

3. 정수삼각형(Link)

분류: Dynamic Programming 난이도: Level3 (Programmers) 풀이 링크: Python 한줄평: 동적계획법의 기본적인 문제 유형. 작은 케이스에서 차차 큰 케이스로 확장해나가면서 풀면 됨.

seungsu3579 commented 3 years ago

2021년 1월 3주차 (링크)

문제

1. 도둑질(Link)

분류: Dynamic Programming 난이도: Level4 (Programmers) 풀이 링크: Python 한줄평: 동적프로그래밍으로 푸는 것도 푸는 것이지만 케이스도 분할하여 진행하여야 해서 조금 더 생각하게 만듬. 더 좋은 코드가 있다면 알려주세요ㅠㅜ

2. 등굣길(Link)

분류: Dynamic Programming 난이도: Level3 (Programmers) 풀이 링크: Python 한줄평: 처음 접근을 잘못했지만 간단히 풀 수 있는 문제였음.

3. 네트워크(Link)

분류: DFS/BFS 난이도: Level3 (Programmers) 풀이 링크: Python 한줄평: set을 통해 더 빠르게 데이터를 제거할 수 있었음. set 관련 메서드의 시간복잡도를 좀더 탐색해보면 좋을 것 같다.

seungsu3579 commented 3 years ago

2021년 1월 4주차 (링크)

문제

1. 여행경로(Link)

분류: DFS/BFS 난이도: Level3 (Programmers) 풀이 링크: Python 한줄평: 이때 같은 티켓이 여러장 있을 수 있는데 이때 길을 체크할 때 여러장을 체크하지 않으면 정확성 테스트1에서 실패. 엣지케이스를 생각하기 어려웠지만 막상 듣고보면 쉬운 문제였음.

2. 입국심사(Link)

분류: Binary Search 난이도: Level3 (Programmers) 풀이 링크: Python 한줄평: 문제 조건을 보고 인사이트를 가질 수 있도록 해야겠다. 입국심사를 기다리는 사람이 10억이면 바로 log(10억)으로 처리할 수 있는 로직을 생각해보도록 하자.

3. 징검다리(Link)

분류: Binary Search 난이도: Level3 (Programmers) 풀이 링크: Python 한줄평: 논리적인 접근이 잘못된듯 하다. 예외 케이스를 찾았지만 해결방법을 찾지는 못했다. 다른 방식의 접근이 필요해보인다. 길이가 10억까지 제시될 수 있는데 Q2에서 풀었던 방식과 비슷하게 접근하려했지만 쉽지 않았다.. 으어ㅓ어

seungsu3579 commented 3 years ago

2021년 1월 5주차 (링크)

문제

1. 폰켓몬(Link)

분류: - 난이도: Level2 (Programmers) 풀이 링크: Python 한줄평: 집합 클래스를 활용하여 품. 음... level2는 아니고 level1 인듯.

2. 스킬트리(Link)

분류: - 난이도: Level2 (Programmers) 풀이 링크: Python 한줄평: 스킬을 찍을 때 순서가 존재했다. 순서를 지키지 않으면 스킬을 찍을 수 없게 한다. 평이한 난이도의 문제였다. 스택을 활용해서 차근차근 풀면 풀 수 있었다.

3. 압축(Link)

분류: - 난이도: Level2 (Programmers) 풀이 링크: Python 한줄평: dict의 get 메서드로 등록 여부를 확인해 진행했다. 무한루프에서 index를 조절하면서 답을 찾아갔는데 과정에서 index에 관한 조건을 잘못걸어 무한루프를 돌아 어려움이 있었다. 2018 KAKAO BLIND 리쿠르팅 문제. 주어진 msg를 압축하는 LZW 알고리즘을 구현하는 문제였다. 처음 문제를 이해하는데 좀 걸렸지만 못 풀 문제는 아니었다.

4. 튜플(Link)

분류: - 난이도: Level2 (Programmers) 풀이 링크: Python 한줄평: 튜플의 사이즈로 정렬하여 추가된 원소를 순서대로 리스트에 추가하여 리턴하였다. 2019 카카오 개발자 겨울 인턴십 문제. 주어진 string을 좀 더 쉽게 파싱하는 방법이 있었다... 어떤 사람을 한줄로 파싱했던데.. 분발하자..

seungsu3579 commented 3 years ago

2021년 2월 1주차

이번주만 패쓰~👍

seungsu3579 commented 3 years ago

2021년 2월 2주차

문제

1. 가장먼노드(Link)

분류: Graph 난이도: Level3 (Programmers) 풀이 링크: Python 한줄평: 노드 클래스를 정의해 주어진 데이터를 그래프로 구조화하고 품. bfs로 한층씩 깊어질수록 count하여 품. 할만함.

2. 방의개수(Link)

분류: Graph 난이도: Level5 (Programmers) 풀이 링크: Python 한줄평: 역시 5level.. 어렵다... 한붓그리기로 지나온 선이 만날때 생기는 방의 수를 새어봤지만 이건 아닌가봐오..

3. 순위(Link)

분류: Graph 난이도: Level3 (Programmers) 풀이 링크: Python 한줄평: 생각보다 까다로웠다. 어찌 풀긴했지만 level3도 어렵구나ㅠㅡ

seungsu3579 commented 3 years ago

2021년 2월 3주차

문제

1. 2019 카카오 겨울 인턴십 : 크레인 인형 뽑기 게임(Link)

분류: stack 난이도: Level1 (Programmers) 풀이 링크: Python 한줄평: 기본적인 stack 문제였다. 차근차근 풀면 쉽게 풀림.

2. 124 나라의 숫자(Link)

분류: math 난이도: Level2 (Programmers) 풀이 링크: Python 한줄평: 3진수를 신기하게 나타낸다. 진수에 대한 이해가 확실해야 풀기 쉬울 듯하다. 자리수가 맞지 않아서 고생했지만 0이 존재하지 않는 3진법이기에 1을 빼주어야 제대로된 연산이 가능했다...

3. 문자열압축(Link)

분류: 문자열 처리 난이도: Level2 (Programmers) 풀이 링크: Python 한줄평: 예제5를 제대로 이해하지 못해서 압축알고리즘을 2번 짰다. compression 함수는 처음 시작으로 패턴이 나뉘지 않더라도 압축이 되는 압축 알고리즘이지만, compression2 함수는 시작부터 n개씩 분리되었을 때 중복인 경우만 압축되도록했다. 당연히 전자를 요구하는 줄 알았지만 후자였다. 문제를 제대로 읽자... 전자가 더 어려웠는데...ㅠㅜ

seungsu3579 commented 3 years ago

2021년 2월 4주차

문제

1. Hackerrank skill certification test 1

문제 설명: 생산에 관련해서 비용과 불량품 유무가 주어지면 해당 날짜의 생산량에 맞춰 생산하고 그중 max cost를 리턴하는 문제 분류: array 난이도: 하 풀이 링크: Python 한줄평: 영어 읽기가 어려웠지 문제는 쉬웠음

2. Hackerrank skill certification test 2

문제 설명: 사전식 정렬에 따라 이름의 character 자리를 바꿔서 사전식으로 정렬했을 때, 더 앞으로 옮겨갈 수 있는지에 대한 여부를 리턴. 분류: array 난이도: 하 풀이 링크: Python 한줄평: 프로그래머스에 등대 문제? 비슷한 문제였는데 character가 증가하는 형태면 불가능하다는 점을 캐치하면 간단한 문제

3. 멀쩡한 사각형(Link)

분류: math 난이도: Level2 (Programmers) 풀이 링크: Python 한줄평: 4, 6, 15, 17번이 안풀린다. 런타임에러도 나는데 누군가는 부동소수점 오류라고 하는데 1시간을 고민했지만 엣지케이스를 찾지 못하겠다.

seungsu3579 commented 3 years ago

2021년 3월 1주차

패스하겠습니당...ㅠㅜ

seungsu3579 commented 3 years ago

2021년 3월 2주차

문제

1. Shortest To Char (동영 추천 문제) (Link)

문제 설명: 주어진 string에서 주어진 char의 가장 가까운 index와 현재 index의 거리에 따른 배열을 리턴하는 문제 분류: array 난이도: Easy 풀이 링크: Python 한줄평: 동영이가 추천한 문제. abs 메서드를 통해 구현하면 양방향 탐색으로 쉽게 풀수 있음. 하지만 시간 복잡도를 고려하여 한방향 탐색하는 대신 이전 char의 위치를 기록하여 O(n)으로 품.

2. Two Sum (Link)

문제 설명: 주어진 배열에서 2가지 원소의 합이 주어진 integer가 되는 조합의 index를 리턴하는 문제 분류: math 난이도: Easy 풀이 링크: Python 한줄평: 그냥 조합! 음... 조합이다.

3. Add Two Numbers (Link)

분류: linked list 난이도: Medium 풀이 링크: Python 한줄평: linked list의 특성을 알고 포인터를 잘 옮겨주면 쉽게 풀수 있다. 올림수가 있어 자리 수가 증가할 경우를 놓쳤지만 해당 케이스를 찾기는 쉬웠다. 그냥 그런 문제.

seungsu3579 commented 3 years ago

2021년 3월 3주차

문제

1. Longest Palindromic Substring (Link)

문제 설명: 주어진 string s 에서 가장 긴 palindromic substring 찾기 분류: array 난이도: Medium 풀이 링크: Python 한줄평: 다양한 방법으로 트라이 해볼수 있는것 같다. 다음번에 문제 한번씩 풀어보면 좋을 것 같습니다.

2. ZigZag Conversion (Link)

문제 설명: 지그재그로 주어진 string s를 재배열하여 나열된 순서로 string을 만들어 리턴 분류: string 난이도: Medium 풀이 링크: Python 한줄평: 규칙을 잘 찾아봅시다.

3. String to Integer (Link)

문제 설명: atoi 함수 구현인데 string을 제거한 수를 32비트의 부호가 있는 정수로 변경해야한다. 분류: string 난이도: Medium 풀이 링크: Python 한줄평: 예외가 너무 많음... 귀찮..

seungsu3579 commented 3 years ago

2021년 3월 4주차

문제

1. Remove Duplicates from Sorted Array (Link)

문제 설명: array에서 중복된 원소값 제거 분류: array 난이도: Easy 풀이 링크: C++ 한줄평: c++ array vector 연습하고자 풀어본 문제.. 수업에서 C++ 쓰는데 어려워서 쉬운거하고 C++ 연습했습니다..

2. Reverse Integer (Link)

문제 설명: int 타입으로 주어진 숫자를 역순으로 바꿔 int 타입으로 리턴하는 문제 분류: string 난이도: Easy 풀이 링크: C++ 한줄평: 그저 숫자 뒤집기인데도 C++ 메서드를 잘 몰라 좀 어려웠습니다. 생각보다 예외도 많고 int 타입의 표현 범위 때문에 애먹었습니다.

3. Palindrome Number (Link)

문제 설명: 지난 주에 풀었던 Palindrome 문제와 동일하지만 전체에서 가장 긴 Palindrome이 아닌 Palindrome인지 판별하는 문제. 분류: stack 난이도: Easy 풀이 링크: C++ 한줄평: vector를 다뤄볼 수 있었음. C++ 어려워.. 포인터 다시공부해야겠습니다.

이번주는 C++ 연습했던 주가 되었네요.. 좀만 익숙해지면 높은 난이도 다시 도전하겠습니다.

seungsu3579 commented 3 years ago

2021년 4월 1주차

문제

1. Container With Most Water (Link)

문제 설명: 리스트로 기둥의 높이가 주어졌을때 물을 담을 수 있는 최대 넓이를 구하는 문제 분류: array 난이도: Medium 풀이 링크: C++ 한줄평: 기본적으로 모든 경우를 찾으려고 하면 시간복잡도가 높아 통과할 수 없음. O(n^2)가 아니라 O(n)으로 풀어야하는 문제. 높은 기둥을 기준으로 범위를 줄여나가면서 넓이를 선형 탐색해야함.

2. Integer to Roman (Link)

문제 설명: 주어진 int 형의 num을 Roman 숫자형태로 바꾸는 문제 분류 : string 난이도: Medium 풀이 링크: C++ 한줄평: medium 문제지만 어려운 테크닉을 요구하지는 않음. 그냥 분기만 잘 나누면 됨.

3. 욕심쟁이 판다 - 추천문제 (Link)

문제 설명: 주어진 정방행렬에서 판다가 이동할 수 있는 최장 루트를 찾는 문제. 다음 경로의 value가 무조건 현재 value보다 높아야 이동 가능. 분류: DP? DFS? 풀이 링크: Python 한줄평: DP, DFS 어떤 방식으로 풀어야할지 고민하다가 쉬운 DFS로 풀었는데 시간 초과가 남. DP로 다시 풀어야하는데 시간이 없네요..ㅎㅎ

seungsu3579 commented 3 years ago

2021년 4월 5주차

문제

1. 3sum (Link)

문제 설명: 3개의 원소 합이 0이 되는 경우를 모두 찾는 것. 분류: array 난이도: Medium 풀이 링크: Python 한줄평: nested loop에 의한 모든 경우 탐색은 n^3번의 연산이 필요하지만 이 문제에서는 O(n^2)의 시간 복잡도 안에 풀기를 요구한다. 해시를 통한 인덱스 접근과 3가지 원소값만 필요하다는 점에서 착안하여 문제를 풀었다.

2. Letter Combinations of a Phone Number (Link)

문제 설명: 문자열 조합 찾기 문제 분류 : array 난이도: Medium 풀이 링크: Python 한줄평: 단순한 조합 찾기 문제.. 이정도는 그냥해도 되고 itertools라는 라이브러리는 쓰면 더 쉽다.

3. Remove Nth Node From End of List (Link)

문제 설명: 링크리스트를 구현하는데 이를 O(n) 시간 복잡도로 삭제 연산을 지원하도록 해야함. 분류: linked list 풀이 링크: Python 한줄평 : 딱히 어려움 없이 풀 수 있는 문제였다.

seungsu3579 commented 3 years ago

2021년 5월 2주차

문제

1. LCS 문제 (Link) - 이번주 추천 문제

문제 설명: LCS문제로 전형적인 DP 문제. 분류: DP 난이도: Medium 풀이 링크: Python 한줄평: 전형적인 DP문제로 알고리즘만 정확하게 이해한다면 코드는 쉬운편인것 같다.

2. Search in Rotated Sorted Array (Link)

문제 설명: 정렬되었지만 회전된 배열에서 이진 문자열 검색 분류 : binary search 난이도: Medium 풀이 링크: Python 한줄평: 정렬된 배열에서 이진 검색은 간단한 문제이지만 이 배열이 회전되어 있어 기본적인 이진 검색과는 달랐다. 이때, 배열에서 max 값을 찾기 위해서 O(n)이 아니라 O(logn)으로 max 값을 찾고 mod를 통해 로테이트된 배열에서 이진 검색을 가능하도록 했다.

3. Remove Element (Link)

문제 설명: 링크리스트를 구현하는데 이를 O(n) 시간 복잡도로 삭제 연산을 지원하도록 해야함. 분류: arrary iter 풀이 링크: Python 한줄평 : 단순한 iter 문제였는데 파이썬임에도 포인터가 등장하고 코드를 역추적해서 답을 확인하는 방식이라 새로운 배열을 만들어서 하면안됐음...

seungsu3579 commented 3 years ago

2021년 5월 3주차