BOJ 21939. 문제 추천 시스템 Version 1
·
코딩테스트/Python
오늘은 정말정말정말 더운 하루였다☀️차라리 비가 와서 더운게 사라졌으면...!!!! 오랜만에 내 책상에 앉아서 모니터로 코드를 작성했는데 최근에 구매한 내 키보드 타건감이 아주 마음에 드는군!이제 만담은 그만하고 문제로 들어가보자 오늘 푼 문제는 "문제 추천 시스템 Version 1"으로 사실 처음에는 그냥 생각나는대로 고민없이 코드를 짜도 빠르게 해결할 수 있을 것이라 생각해서 도전했는데 생각보다 좀... 걸렸다.  문제에 대한 설명은 위와 같다. 우선 총 세가지 함수를 구현해야하는데, add와 solve의 경우 dictionary를 활용하여 key, value 값으로 조작한다면 간단히 해결이 가능하다. recommend도 정말 쉽게 생각하여 문제에 나와 있듯이, x = 1인 경우 난이도로 정렬, 그리..
BOJ 16168. 퍼레이드 + 오일러 경로 탐색하기
·
코딩테스트/Python
이제 오늘부터 다시 매일매일 공부한 내용을 기록하기 + 1일 1 커밋으로 잔디 채우기를 다시 시작하기로 마음먹었다!!🔥다시 달려 보자고!!!  그래서 이름도 깜찍한 퍼레이드로 문제를 선택했다.  문제를 읽으면서 든 생각은 흠... 누가봐도 그래프 문제군 그러면 또 dfs, bfs 왕창 쓰겠지 라고 생각했는데 마음에 걸린 문장이 하나 있었다.바로..! 같은 지점은 두번 이상 지나도 된다!!일단 내가 아는 일반적인 경로 탐색 문제가 아니였다. 역시 알고리즘 문제를 풀 때 이해안가면 나무에서 숲으로 확장시키는게 나한테 가장 효율적인 방법이라고 생각한다.  이 예제 테스트 케이스를 보면 정점의 갯수, 간선의 갯수가 주어지고 그래프의 간선을 나열해준다.   이 예제를 그리면서 든 생각은 '한붓그리기' 였다!! ..
99클럽 코테 스터디 13일차 TIL + LeetCode 1338. Reduce Array Size to The Half
·
TIL
우왕 오늘은 과외가기전에 진짜 빠르게 한문제 해결하고 가려고 노트북을 열었다!왜이렇게 날씨는 또 더운거야 여름 저리가☀️ 두둥..오늘의 문제문제자체는 간단하다 근데 입출력을 살피니 숫자의 최대치가 무려 10^5임을 알 수 있다.그래서 자연스럽게 어제의 기억으로 heap을 떠올렸던거 같다.   문제가 무슨 소리를 하는지 모르겠어서 예시를 살펴보니  흠... 일단 여러 숫자가 반복되는 배열이 존재하고, 특정 숫자를 제거했을때 최초로 전체 길이의 절반이 되도록하는 제거할 숫자의 set 길이를 구해라! 그니까 [3,3,3,3,5,5,5,2,2,7] 이렇게 있을 때3의 갯수 4, 5의 갯수 3, 2의 갯수 2, 7의 갯수 1 처음 갯수가 최대인 3을 제거하면 전체 길이의 6이 남으므로 전체의 절반이 되지 않아서 ..
99클럽 코테 스터디 13일차 TIL + LeetCode 1845. Seat Reservation Manager
·
TIL
오늘은 사무실에서 카카오톡 알림톡 기능을 구현 성공하고 기분이 너무 좋아서 가벼운 발걸음으로 왔다~!그리고 노트북 열어서 알고리즘 공부 스타트🔥  오늘 문제는 읽으면서 코드짤 때 뭐야 이게 끝이야? 싶었지만 역시나 숨겨진 문제가 있었다.   일단 문제를 읽어보니SeatManager로 n값에 따라서 앉을 수 있는 자리 initialize,reserve() 메소드로는 자리를 예약했으르로 가장 숫자가 작은 자리를 pop,unreserve() 메소드로는 주어진 seatNumber에 따라서 다시 이 자리를 반납하도록 구현하면 된다. 그래서 코드도 그냥 그대로 쉽게 구현했다. class SeatManager: def __init__(self, n: int): self.seat = [] for ..
[BOJ][Python] 2979 : 트럭 주차
·
코딩테스트/Python
오늘 푼 두번째 문제!문제 자체가 이해가 안되는건 아니지만 바로 풀이 방법이 떠오르지 않아서 괴로웠다ㅠ  문제는 다음과 같이 주차된 시간과 나간 시간을 알려주면 해당 주차장에 있는 차의 갯수를 구하고 주차요금을 계산해내야한다.   예시를 보면 처음 3개의 숫자는 1대가 주차되었을 때의 가격 / 2대 가격 / 3대 가격이다.단 여기서 2대가격, 3대가격의 경우 1대당 가격이므로 금액을 산정할 경우 *2, *3을 해주어야한다. 처음에 첫번째 예시만 보고 항상 1대 > 2대 > 3대 > 2대 > 1대 순으로 구성된다고 생각했으나 두번째 예시를 보면 꼭 그런것은 아님을 알 수 있다.    위의 로직을 코드로 표현하면 아래의 코드가 된다.(최근에 파이썬으로 언어를 바꿔서 그런가 입출력이 어색하긴하네😎)impor..
99클럽 코테 스터디 12일차 TIL + 921. Minimum Add to Make Parentheses Valid
·
TIL
오 내 블로그에 변화가 생겼다!!내 맥북이 시간에 따라서 다크모드 on/off를 결정하는데 오늘 문제 캡쳐가 하얀 배경이라는 것은..!이제 방학이라고 일찍 공부를 시작했다는 것!!(그래도 밤에 하는 코딩이 좀 집중빡이긴 한데⭐️) 오늘의 문제도 겉만 휘황찬란하지 실제로는 별거없었다! Parenthese : 괄호이 문제는 괄호가 올바르게 닫히기 위해서는 몇개의 추가 괄호가 필요한지 구하는 문제이다.예시도 정말 간단하게 아래처럼 구성되어있다. 처음에 문제를 접하자마자 든 생각은 그냥 세면 되는거 아니야?라고 했는데 아니? edge case가 존재했다!반례 : s = "()))(("이 경우에는 괄호의 짝을 지어주기위해서 4개의 추가가 필요하나 갯수를 세서 구한다면 그냥 0으로 결과를 내버린다. 다시 한번 외치..
99클럽 코테 스터디 11일차 TIL + LeetCode 2390. Removing Stars From a String
·
TIL
다시 일상으로 복귀하고 맞이한 첫 월요일!!오늘은 역삼역에 있는 aws 사무실에서 aws 보안 세션을 듣고 퇴근길 지하철에 이리저리 치이다보니 진짜 빡센하루였는데(정말 강남 인구밀도 무슨일이야...) 다행히 1일 1코테 문제는 좀 할만 한 문제라 얼른 풀고 마음이 홀가분해진 채로 오늘의 TIL을 적는다 🤩  문제를 해석해보자면 문자열 s에서 *을 만나면 그 왼쪽에 있는 문자를 하나씩 지워나가는 것이다.역시 영어를 보면 뭐라는지 바로 이해하기 힘드니까 예제를 보자.  실제로 예제를 보자마자 떠오른건 이건... stack..? 문자열을 탐색하면서 *이 아닌 문자열은 모두 stack에 넣고 *을 만날때마다 pop 연산을 해주면 된다! class Solution: def removeStars(self, ..
99클럽 코테 스터디 10일차 TIL + LeetCode 341. Flatten Nested List Iterator
·
TIL
드디어 종강이다~!~!종강이지만 그래도 그동안 업보가 있으니까 양심 상 오늘부터 다시 1일 1코테 도전🔥리트코드의 341번 Flatten Nested List iterator로 시작!!항상 리트코드는 문제 이해가 어려워...    문제를 보면 Nested List를 풀어서 하나의 리스트로 만드는게 목표다.   예시를 보면 다음과 같다.안에 있는 리스트를 풀어서 하나의 리스트로 변환하는 코드를 작성해야한다. pseudocode를 보면 1. 먼저 nestedList를 초기화한다.2. iterator.hasNext()가 존재한다면 while 문을 돌면서 숫자만 원하는 리스트에 append한다.3. 그리고 그 리스트를 return하는 것으로 마무리! 이 문제의 로직은 어렵지 않지만 파이썬의 클래스를 활용해서 ..
99클럽 코테 스터디 9일차 TIL + Programmers 가장 먼 노드
·
TIL
문제를 읽자마자 든 생각은 음... 그래프군...또 완전 탐색을 하겠군... 그러면 DFS..? 라고 생각해서 dfs로 풀 생각을 하다가 count 즉 몇번째 방문인지 계산하는 곳에서 막혀서 BFS로 갈아탔다ㅋㅋㅋㅋ 일단 코딩테스트 문제를 만나면 가장 곤혹스러운게 입출력을 내 입맛대로 가공하는 것 같다.-> 이건 좀 하나의 루틴을 만들어서 쇼부를 봐야겠어.. 돌고돌아온 문제 풀이 방법으로는내가 원하는 입력값은 linked list처럼 생겼지만 방향이 없는 그래프를 저장하는 2차원 배열이다.빨간색 박스는 index로 사용할 값들이다! 이후에는 일반적인 bfs 알고리즘처럼 queue에 현재 방문한 노드값을 담고 하나씩 꺼내면서 방문처리하는 방법이다!추가로 1에서 얼마나 떨어져있는지 세기 위해서 cnt 배열을..
Swagger trouble shooting : Whitelabel Error, CORS, Network failed
·
Back-end
Swagger💡api docs를 작성할 때 기존에는 excel 파일로 작업해서 소통했는데 이 방식은 내가 api를 개발할 때마다 작성하는 번거로움이 크고, front 개발자분께서 postman 등을 이용해서 매번 테스트하는 환경을 구축해야하는 불편함이 있었다. 또한 excel 파일은 실시간 동기화도 안돼...!!(구글 sheet를 사용한다 하더라도 굉장히 번거롭고 개발자스럽지 못하다는 단점으로 인해..)따라서 swagger를 통해 api docs를 더 간편하고 api 문서임과 동시에 테스트 환경을 제공한다는 장점을 바탕으로 채택 후 매번 프로젝트 시 마다 사용하고 있다!  이런 장점이 있는 swagger는 매번 적용시 마다 꼭 한번씩 오류를 뱉어서 날 고통스럽게 하는데 이참에 마주한 오류를 모조리 정리..
99클럽 코테 스터디 8일차 TIL + Programmers 조이스틱
·
TIL
문제 문제 해결 과정이 문제는 두가지 문제로 나누어 해결할 수 있다. 1. 먼저 알파벳으로 상하를 결정하고2. 좌우로 움직는 횟수를 카운트 한다. 먼저 1번의 경우에는 1-1. 각 알파벳에 해당하는 ASCII 코드를 이용하자!"A" 의 아스키 코드는 65로 이후 1씩 증가하며 알파벳을 나타낸다.총 26개의 알파벳에 대해서 A 부터 해당 알파벳까지 얼마나 움직여야하는지 계산python에서는 ord("A")와 같은 방식으로 아스키 코드로의 번호를 계산할 수 있다. 이때 만약 13번 이상 움직여야 한다면 반대방향으로 움직이는게 이득이므로 26에서 move 횟수를 빼준다. 2번의 경우가장 머리가 아팠던 부분인데,그냥 일반적인 경우에는 전체 문자열 길이 -1 만큼 움직이는게 맞다.그러나 A가 반복되는 경우 "JA..
99클럽 코테 스터디 7일차 TIL + LeetCode All Paths From Source to Target
·
TIL
문제 설명Given a directed acyclic graph (DAG) of n nodes labeled from 0 to n - 1, find all possible paths from node 0 to node n - 1 and return them in any order. 주어진 DAG 에서 0번째 노드부터 n-1 까지의 경로를 모두 출력하도록 하는 것! 문제 풀이 과정이번에는 dfs를 통해 해결하고자 한다!재귀함수를 이용하여 새로운 dfs라는 함수를 선언하고, 끝(len(graph)-1)까지 내려가면 하나의 path가 완성된 것이므로 answer에 추가한다. 코드로 작성하면 아래와 같다.from collections import dequeclass Solution: def allPaths..