본문 바로가기

Programming207

[LeetCode] Two Sum https://leetcode.com/problems/two-sum/ Two Sum - 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 Leet Code의 문제들을 풀어 볼 예정이다. 처음 문제인 Two Sum 문제를 풀어봤다. 예전 화이트보드 코딩 테스트때 이 문제를 접한 적이 있었는데, 이렇게 유명한 문제인지 몰랐다. 그 때는 잘 못 풀었는데.. 이 문제는 dict 를 사용하면 O(n) 으로 풀이할 수 있다. 나의 풀이 class Solution: def tw.. 2022. 2. 9.
[프로그래머스] 카드 짝 맞추기(Python) https://programmers.co.kr/learn/courses/30/lessons/72415 코딩테스트 연습 - 카드 짝 맞추기 [[1,0,0,3],[2,0,0,0],[0,0,0,2],[3,0,1,0]] 1 0 14 [[3,0,0,2],[0,0,1,0],[0,1,0,0],[2,0,0,3]] 0 1 16 programmers.co.kr 완전 탐색 + bfs로 풀이하려다 실패하고 다른 풀이를 참고했다. 알고리즘은 모든 경우에 대해 탐색하는 것인데, 매번 경우에서 순서를 정해놓고 탐색하는 아이디어다. 제거된 카드인지 확인하는 부분에서 비트 연산을 쓰는 것이 인상적이다. 나도 이렇게 짤 수 있게 노력해야겠다잇 import math import queue Board = [] Allremoved = 1 A.. 2022. 2. 8.
[프로그래머스] [3차] 자동완성(Python) https://programmers.co.kr/learn/courses/30/lessons/17685 코딩테스트 연습 - [3차] 자동완성 자동완성 포털 다음에서 검색어 자동완성 기능을 넣고 싶은 라이언은 한 번 입력된 문자열을 학습해서 다음 입력 때 활용하고 싶어 졌다. 예를 들어, go 가 한 번 입력되었다면, 다음 사용자는 g programmers.co.kr Trie 알고리즘을 활용해서 풀었다. 나의 풀이 class Trie(): def __init__(self): self.child = dict() self.count = 0 def insert(self,string): curr = self for str in string: if str not in curr.child: curr.child[str].. 2022. 2. 7.
[프로그래머스] 호텔 방 배정(Python) https://programmers.co.kr/learn/courses/30/lessons/64063 코딩테스트 연습 - 호텔 방 배정 programmers.co.kr 딕셔너리를 활용해서 해당 방 선택 시 몇 번으로 이동하면 되는지 저장하면 된다. def solution(k, room_number): answer = [] room = {} for num in room_number: index = num visit = [index] while index in room: index = room[index] visit.append(index) answer.append(index) for i in visit: room[i] = index + 1 return answer 2022. 2. 5.
[프로그래머스] 미로 탈출(Python) https://programmers.co.kr/learn/courses/30/lessons/81304 코딩테스트 연습 - 미로 탈출 4 1 4 [[1, 2, 1], [3, 2, 1], [2, 4, 1]] [2, 3] 4 programmers.co.kr 방문처리에서 굉장히 헷갈렸던 문제다. 다른 풀이를 보고 참고했다. 비트 마스크에 대해 알게 되었다. import heapq INF = 987654321 def dijkstra(n,graph,start,end,traps): visited = [[False for _ in range(1 2022. 2. 4.
[프로그래머스] 선입 선출 스케줄링(Python) https://programmers.co.kr/learn/courses/30/lessons/12920 코딩테스트 연습 - 선입 선출 스케줄링 처리해야 할 동일한 작업이 n 개가 있고, 이를 처리하기 위한 CPU가 있습니다. 이 CPU는 다음과 같은 특징이 있습니다. CPU에는 여러 개의 코어가 있고, 코어별로 한 작업을 처리하는 시간이 다릅니 programmers.co.kr 이진탐색을 활용해야 하는 문제였다. 비슷한 문제를 풀었었는데 떠올리지 못했다. def solution(n,cores): if n = n: right = mid else: left = mid + 1 for core in cores: n -= (right-1)//core for i in range(len(cores)): if right .. 2022. 1. 31.
[프로그래머스] 사라지는 발판(Python) https://programmers.co.kr/learn/courses/30/lessons/92345 코딩테스트 연습 - 사라지는 발판 [[1, 1, 1], [1, 1, 1], [1, 1, 1]] [1, 0] [1, 2] 5 [[1, 1, 1], [1, 0, 1], [1, 1, 1]] [1, 0] [1, 2] 4 programmers.co.kr minimax 알고리즘 문제였다 옛날에 다른 회사 지원할 때 코딩 테스트에서 승리할 때 최대한 빨리 이기고 질 때 최대한 늦게 지는 문제를 만났었는데 그때도 못 풀었는데 지금도 못 풀었다.. 일단 완전 탐색 문제고, 모든 경우에서의 값을 구하는 것은 성공했는데, 어떤 사람이 무조건 이기는지에 대해 구현하는 데에 어려움을 겪었다. 나중에 비슷한 문제가 나왔을 때 참.. 2022. 1. 30.
[프로그래머스] 파괴되지 않은 건물(Python) https://programmers.co.kr/learn/courses/30/lessons/92344 코딩테스트 연습 - 파괴되지 않은 건물 [[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5]] [[1,0,0,3,4,4],[1,2,0,2,3,2],[2,1,0,3,1,2],[1,0,1,3,3,1]] 10 [[1,2,3],[4,5,6],[7,8,9]] [[1,1,1,2,2,4],[1,0,0,1,1,2],[2,2,0,2,0,100]] 6 programmers.co.kr 누적합을 활용한 문제 - 2차원 배열상에서 누적합을 어떻게 사용하는지 배웠다 def solution(board, skill): n,m = len(board), len(board[0]) change = [[0].. 2022. 1. 30.
[프로그래머스] 양과 늑대(Python) https://programmers.co.kr/learn/courses/30/lessons/92343 코딩테스트 연습 - 양과 늑대 [0,0,1,1,1,0,1,0,1,0,1,1] [[0,1],[1,2],[1,4],[0,8],[8,7],[9,10],[9,11],[4,3],[6,5],[4,6],[8,9]] 5 [0,1,0,1,1,0,1,0,0,1,0] [[0,1],[0,2],[1,3],[1,4],[2,5],[2,6],[3,7],[4,8],[6,9],[9,10]] 5 programmers.co.kr 쉽지 않았던 문제다. 풀면서 생겼던 문제는 현재 상태에서 갈 수 있는 노드를 찾는 과정에서 객체를 같이 참조하면서 무한루프를 돌았다. 그 부분을 어떻게 할지 고민했다. 알고리즘은 다음과 같다. 1. 루트 노드부터 .. 2022. 1. 28.
[프로그래머스] 주차 요금 계산(Python) https://programmers.co.kr/learn/courses/30/lessons/92341 코딩테스트 연습 - 주차 요금 계산 [180, 5000, 10, 600] ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"] [14600, 34400, 5000] programmers.co.kr 주어진 조건대로 구현하면 되는 전형적인 구현 문제다 dict를 활용하여 풀었다. 00:00 입차하는 경우를 처리하기 위해 defaultdict를 -1로 초기화해줬다 나의 풀이 from .. 2022. 1. 23.
[프로그래머스] 양궁대회 (Python) https://programmers.co.kr/learn/courses/30/lessons/92342 코딩테스트 연습 - 양궁대회 문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원 programmers.co.kr combinations_with_replacement 를 활용해서 풀었다 나의 풀이 from itertools import combinations_with_replacement from collections import Counter def solution(n, info): max_score = 0 answer = [] for i in combinations_with.. 2022. 1. 23.
[프로그래머스] k진수에서 소수 개수 구하기 (Python) https://programmers.co.kr/learn/courses/30/lessons/92335 코딩테스트 연습 - k진수에서 소수 개수 구하기 문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소 programmers.co.kr 처음에 문제를 제대로 이해 못 해서 당황했다 그냥 해당 진수로 변경하고, 0이 나올 때마다 그 앞자리가 소수인지 확인하면 된다. 나의 풀이 import math def is_prime_number(x): if x < 2 : return False for i in range(2, int(math.sqrt(x)) .. 2022. 1. 19.
[프로그래머스] 신고 결과 받기 (Python) https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 딕셔너리를 활용하는 문제다 뭔가 더 깔끔하게 풀 수 있을 것 같긴 하다. 나의 풀이 from collections import defaultdict def solution(id_list, report, k): # 신고 당한 횟수 기록 # 해당 유저 신고한 사람 기록 # 신고 한 리스트 report_dict = defaultdict(list) report_.. 2022. 1. 19.
탑 프로그래머스 ..! 프로그래머스에서 기업 지원하며 코딩 테스트를 봤었는데 상위 5% 안에 들었나 보다. 탑 프로그래머스 멤버 하라고 메일이 왔다. 아직 잘 못하는데 탑 프로그래머스라니 좀 어색하다. 3달 전만 해도 1단계도 잘 못 풀었는데.. 아무튼 더 열심히 해야겠다. 2022. 1. 13.
python의 LEGB 규칙 파이썬에서 변수에 값을 바인딩하거나 변수의 값을 참조하는 경우 LEGB 규칙을 따른다. 1. L - Local의 약자로 함수 안을 의미한다. 2. E - Enclosed function locals의 약자로 내부 함수에서 자신의 외부 함수의 범위를 의미한다. 3. G - Global의 약자로 함수 바깥 즉, 모듈 범위를 의미한다. 4. B - Built-in의 약자로 open, range와 같은 파이썬 내장 함수들을 의미한다. a = 10 def test(): a = 20 print(a) test() 위 코드에서 test 함수가 호출되게 되면 a라는 변수가 바인딩하는 값을 출력하게 된다. 즉 변수가 바인딩하는 값을 참조해서 출력하고자 하므로 LEGB순으로 탐색한다. test 함수 안이 바로 local 영.. 2022. 1. 11.