전체 글 140

[Python] Leetcode 134. Gas station

목차 문제 https://leetcode.com/problems/gas-station/ Gas Station - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 설계&풀이 정말 간만에 머리를 앓았던 문제라서 포스팅한다. 코테에서 자주 보이던 그리디 문제인데, 처음엔 완탐으로 했다가 시간초과가 났다. # 시간초과 풀이... # 한바퀴 만큼 순회 n = len(gas) if n == 1: if gas[0] >= cost[0]: return 0 else: -1 for ..

[Python] 백준 온라인 저지 18870 좌표 압축

목차 문제 https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 설계&풀이 좌표 압축이란, 주어진 좌표를 크기순으로 정렬하는 행위를 말한다. 예를들어 다음과 같은 리스트(좌표) 가 주어졌다고 가정하면.. tempList = [1, 3, 4, 2, 4] # 좌표압축 실행 후 print(tempList) # 결과 ''' [0, 2, 3, 1, 2] ''' 이런식으로, 오름차순 정렬 기준으로 1은 0번째 ..

[Python] 백준 온라인 저지 17609 회문

목차 문제 https://www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 설계&풀이 처음엔 별다른 알고리즘을 생각하지 않고 그냥 for문 돌려서 풀려고 했다. 그런데 결과는 시간초과. 뭘까 뭘까.. 생각을 하다가, 투포인터가 생각나서 투포인터로 풀어봤는데, 정답이었다. 처음 코드는 다음과 같다. ''' 1. 일반적인 회문 판단 함수, 정답을 출력하는 함수 두개로 나뉘어서 작업해주자 ''' import sys t = int(input()) # 0, 1, 2중 하나 출력해주는 함수 def p..

[Python] Programmers 더 맵게

목차 문제 https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 설계&풀이 이전에 백준에서 풀었던 이중 우선순위 큐에서 힙을 사용했기에, 힙 사용법을 대략적으로 파악하고 있어서 큰 어려움은 없었다. 설계는 다음과 같이 했다. 1. scoville 배열만큼 heap 배열에 담아주고, 해당 배열을 heapq로 힙 형태로 전환시켜준다. heappop() 을 사용하면 가장 왼쪽(0번인덱스) 가 추출됨과 동시에..

[Python] 백준 온라인 저지 2606

목차 문제 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 설계&풀이 가장 기초적인 DFS/BFS 문제다. 이전에 비슷한 문제를 풀어서인지, 동일한 폼으로 풀 수 있었다. 풀면서 새로 안 사실이 있는데, 파이썬에선 전역변수 설정을 별도로 해줘야 하는 것이었다. dfs와 bfs 함수 안에 cnt로만 해두면 알아서 전역변수로 찾아가는건줄 알았는데, 그게 아니라 global로 선언해줘야 되더라; 몰랐음.. 기초적인 문제다보니 특별한 설명은 필요없을듯 하다..

[Python] 백준 온라인 저지 1764

목차 문제 https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 설계&풀이과정 먼저 시간초과가 난 내 코드다. import sys # 시간초과 풀이 n, m = map(int, input().split()) hPeople = [ sys.stdin.readline().rstrip() for _ in range(n) ] sPeople = [ sys.stdin.readline().rstrip() for _ in range(m) ] answer = [] ..

[알고리즘 이론] 다익스트라(Dijkstra), 최단 경로 알고리즘

목차 이 글은 Notion에서 작성 후 재편집한 포스트입니다. 개요 다익스트라 최단 경로 알고리즘은 그래프에서 여러 개의 노드가 있을 때, 특정한 노드에서 출발하여 다른 노드로 가는 각각의 최단 경로를 구해주는 알고리즘이다 다익스트라 최단 경로 알고리즘은 ‘음의 간선’이 없을 때 정상적으로 동작한다. 음의 간선이란, 0보다 작은 값을 가지는 간선을 의미하는데, 현실 세계의 길(간선)은 음의 간선으로 표현되지 않으므로 다익스트라 알고리즘은 실제로 GPS 소프트웨어의 기본 알고리즘으로 채택되곤 한다. 다익스트라 최단 경로 알고리즘은 기본적으로 그리디 알고리즘으로 분류된다. 매번 ‘가장 비용이 적은 노드’를 선택해서 임의의 과정을 반복하기 때문이다. 참고 https://www.youtube.com/watch?..

[Python] 백준 온라인 저지 1003

목차 문제 https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 설계 및 풀이 DP 문제이다. 사실 문제 유형을 어떻게 알아내는지는 좀 더 문제를 풀어봐야 알 것 같다. 처음엔 재귀로 풀었는데, 재귀로 풀다보니 시간 초과가 되어서 뭘까 고민하다가 결국 답지를 봤는데.. DP더라... 먼저, 재귀로 푼 코드다. cntZero = 0 cntOne = 0 def fibonacci(n): global cntZero global cntOne if n == 0: cntZero += 1 return 0 elif n == 1: cntOne += 1 return..

[던파 쌀먹봇] 2021-02-16 개발일지 - 오픈빌더 -> 메신저봇 변경 및 카드검색 기능 추가

이 글은 Notion에서 작성 후 재편집한 포스트입니다. 목차 개요 정말 오랜만에 포스팅한다... 그동안 회사 리뉴얼 프로젝트가 너무 많았는데, 짬짬이 개발은 했지만 블로그에 포스팅 하진 않았고, 노션으로 따로 적어놨다. 아무튼 프로젝트 끝났으니 다시 조금씩 포스팅 한다! 화이팅.. 이전까지 작업했던 내용과 완전히 달라졌다. 일단 그전까지는 카카오톡 채널을 이용한 오픈빌더로 만들려고했는데.. 편의성 측면에서 아무래도 차이가 나더라. 예를 들어, 검색을 하고 싶은데 단톡에서 친구들이나 길드원끼리 얘기하다 바로 검색하는게 편하지, 채팅방 나가서 채널(친구) 찾고 검색하면 귀찮지 않은가.. 그래서 단톡에서 바로 친구처럼 사용할 수 있는 '채팅 자동응답 봇(초록봇)' 을 사용했다. 해당 봇의 자세한 내용은 아래..

근황

글을 안쓴지 너무오래됐는데 회사에서 리뉴얼 프로젝트하느라 진짜 너무 바쁨.. 쌀먹봇도 업데이트해야되고...여러가지 올리고싶은 정보 팁들이 많은데 주말밖에 시간이안난다. 근데 주말엔 쉬어야지? ㅎ 암튼 리뉴얼 프로젝트 끝나는대로 밀렸던거 업데이트 할 예정이다 람쥐썬더!!!!! 리뉴얼 진행하면서 기존 레거시 코드 최적화도 경험해보고, 내가 짠 코드들 다시 리팩토링하는 경험이 되서 좋은듯.

일상 2021.05.04