python(53)
-
Python 코딩테스트
문자열 뒤집기print(string[::-1])중복제거print(list(set(tmp)))zip 함수for n1, n2 in zip(tm1, tm2): print(n1, n2)dict 정렬dic = {'a' : 3, 'b' : 1, 'c' : 5}sorted(dic) # key로 sortsorted(dic.item(), key = lambda x: x[1])sorted(dic.item(), key = lambda x: (x[1], x[0]))2차원배열에서 열 추출a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]b = list(zip(*a))[0]깊은 복사import copycopied = copy.deepcopy(ori)실수 표현 정확도 한계a = 0.3 + 0.5if a == ..
2024.10.04 -
Dijstra 알고리즘 - python
문제를 풀다 보면 최단 경로와 관련한 문제들이 종종 출제된다. 물론 bfs나 dfs와 같은 완전탐색이 필요한 경우도 있지만, 대부분 다익스트라 알고리즘으로 해결이 가능하다. Dijstra 알고리즘은 기본적으로 최단 경로를 찾는 알고리즘이다. 즉 출발 노드로 부터 각 노드들의 최단 거리를 구할 수 있고, 경로 또한 계산이 가능하다. 주의할 점은 다익스트라는 양의 weight를 가지는 edge들이 있다는 가정이 필요하다. 기본적인 로직은 다음과 같다. 1. 출발 노드를 방문. 2. 해당 노드로 부터 연결된 노드들을 통해 각 노드들 마다 거리를 계산 후 저장. 3. 방문하지 않은 노드들 중 출발 노드랑 거리가 가장 작은 노드에 방문. 4. 새로 방문한 경로를 통해 계산된 새로운 거리와 기존에 저장된 최단 거리..
2023.08.02 -
[프로그래머스] 두 원 사이의 정수 쌍 - PYTHON
문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181187# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 및 코드 기본적으로 가능한 r,c들을 돌면서, 해당 좌표가 두 원 사이에 있는 지 확인하는 방식은 시간초과가 발생한다. 구간을 나누어서 계산해도 마찬가지였다. 해당 문제는 r 에 따른 최대 c를 구하는 방법을 사용해서 계산해야한다. 즉 특정 r에 대해 r1, r2 거리를 가지기 위한 c를 구하고, 'r2에 대한 c - r1에 대한 c' 방법을 활용해야 한다. 피타고라스를 ..
2023.07.11 -
[프로그래머스] 주차 요금 계산 - python
문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 특별한 알고리즘 문제보다는 구현 문제였다. 차별점을 찾자면 무작위로 저장되어 있는 값을 차량별로 값을 구분하여 처리해야 했다는 점이다. 필자는 이를 defaultdict를 이용해서 해결했다. 차량의 주차 시간은 출차시간 - 입차시간 이기에 입차시간은 -로 출차시간은 +로 저장했다. HTML 삽입 미리보기할 수 없는 소스
2023.06.28 -
[프로그래머스] 양궁대회 - python
문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 알고리즘 문제는 풀어도 풀어도 어렵다. 꾸준히 문제 푸는 습관을 들여야 하는데 이게 참 어렵다. 필자는 처음에 knapsack을 이용해서 해결하고자 했다. 하지만 knapsack을 이용해 구하고자 쉽지 않았다. 먼저 knapsack은 기본적으로 제한된 cost내에서 최고의 value를 구하는 알고리즘이다. 따라서 10개의 화살을 이용해 최대 점수를 구한다고만 생각했고 충분히 ..
2023.06.28 -
프로그래머스 - 등산코스 정하기(Python)
문제보기 https://school.programmers.co.kr/learn/courses/30/lessons/118669 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 및 코드 처음에는 dfs, bfs로 풀려고 했다가 삽질을 좀 했다. 풀리긴 하겠지만 코드가 지저분해서 구현하는 데 오랜 시간이 걸렸고 시간초과로 인해 깔끔하게 다른 방법을 고민하던 중 다익스트라로 접근했다. 연결된 노드들 중에서 가장 작은 노드 부터 찾는 방식으로 구현했다. 하지만 파이썬이라 그런지 다익스트라로 구현해도 시간초과가 났고 다른 분들 코드와 비교해 가면서 몇가지 이유를..
2023.05.09