일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 백준
- HTTP
- beandefinitionstoreexception
- 2981
- spring security
- applicationeventpublisher
- springboot
- brute force
- BFS
- error
- Spring
- 라이브템플릿
- javascript
- 파이썬
- 최단경로
- 2018 KAKAO BLIND RECRUITMENT
- Dijkstra
- algorithm
- 소수
- 문자열
- 프로그래머스
- 알고리즘
- codility
- API
- counting elements
- 탐욕법
- Python
- java
- Greedy
- 코딩테스트
- Today
- Total
목록Python (35)
Altiora Petamus
1269번: 대칭 차집합 1269번: 대칭 차집합 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어 www.acmicpc.net 🤔생각해보기 파이썬은 set 자료구조를 사용하면 집합 연산을 편리하게 처리할 수 있다. 대칭 차집합의 연산자는 ^ 이다. 집합 연산을 알고 있다면 굉장히 쉬운 문제. Code n, m = map(int, input().split()) A = set(map(int, input().split())) B = set(map(int, input().split())) print(len(A ^ B))
1919번: 애너그램 만들기 1919번: 애너그램 만들기 두 영어 단어가 철자의 순서를 뒤바꾸어 같아질 수 있을 때, 그러한 두 단어를 서로 애너그램 관계에 있다고 한다. 예를 들면 occurs 라는 영어 단어와 succor 는 서로 애너그램 관계에 있는데, occurs www.acmicpc.net 🤔생각해보기 브론즈2 답지 않게 문제는 엄청 복잡하게 적어놨지만, 정리해보면 두 문자열에서 동시에 포함하지 않은, 서로의 문자열에만 포함된 문자열을 찾는 문제입니다. set() 을 사용하면 집합 연산을 사용할 수 있지만, 중복이 제거되면서 개수를 파악하기 힘들게 될 수 있기 때문에, Counter 를 사용해주었습니다. Code from collections import Counter a = Counter(in..
PermCheck coding task - Learn to Code - Codility PermCheck coding task - Learn to Code - Codility Check whether array A is a permutation. app.codility.com 🤔생각해보기 주어진 배열이 순열이 맞는지 검사하는 문제 set() 으로 변환 후 비교하면 순서에 상관없이 동등한지 비교가 가능하므로 간단하게 해결이 가능하다. def solution(A): n = set([i for i in range(1, len(A) + 1)]) return 1 if n == set(A) else 0
10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net 🤔생각해보기 최근 난이도를 볼 수 있게 된 이후 브론즈 단계의 문제는 객관적으로 참고할 일이 거의 없을 것 같아서 따로 작성하지 않았다. 하지만 이 문제는 난이도를 떠나 풀이 방법이 꽤나 다양하게 나올 수 있고 그 과정이 개인적으로 재미있었기 때문에 작성해본다. 로직은 문제에서 설명해준 그대로 세로로 읽게 하면 된다. 아무래도 반복문을 사용하는 풀이가 많이 보이던데, 그러면 depth 의 증가를 피할 수 없으므로 zip() 을 활용해서 풀어보았다. Code..
코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 🤔생각해보기 파이썬의 정렬은 순서가 뒤집히지 않는 stable 한 정렬을 구현하고 있다. 그러므로 정렬의 단계에 맞춰서 실행되게끔만 구현하면 된다. 방법은 다음과 같다. 문자열을 파싱하기 위해서 정규식을 사용한다. 정규식의 그룹을 활용하면 특정 부분을 쉽게 추출할 수 있다. 파이썬의 람다를 활용하면 정렬 조건을 넣을 수 있다. 튜플의 요소들이 순서대로 실행된다. 코드 import re def solution(files): p = re.compile(r..
코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr 🤔생각해보기 처음은 정규식으로 해결했는데 원인 모를 런타임 에러가 발생해서 정규식을 사용하지 않고 해결했다. 사실 "," 로 필요한 문자열을 구분할 수 있기 때문에 굳이 정규식을 쓰지 않아도 되고... 에러 찾는데 시간을 오래 허비해서 아쉽지만, 해결과정의 알고리즘은 간단한 편이다. "#" 을 그냥 처리할 수는 없으므로 2개의 문자를 하나로 변환해주는 과정을 구현해주는 것이 핵심 아이디어라 할 수 있겠다. 코드 def convert(string): ..
1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존 www.acmicpc.net 🤔생각해보기 최단 경로 문제의 특정 조건이 포함된 응용 버전이다. v1, v2 를 거쳐서 N 에 도달해야하는데 처음엔 v2 → v1 의 경우를 미처 고려하지 못해서 헤메다가 다른 분의 풀이에서 그 조건에 대한 통찰을 얻게 되어 해결할 수 있었다. 시작점 → v1 → v2 → N 시작점 → v2 → v1 → N 위 2가지 경우의 경로를 구하여 둘 중 작은 값을 출력한다. 코드 import sys import heapq ..
9370번: 미확인 도착지 (취익)B100 요원, 요란한 옷차림을 한 서커스 예술가 한 쌍이 한 도시의 거리들을 이동하고 있다. 너의 임무는 그들이 어디로 가고 있는지 알아내는 것이다. 우리가 알아낸 것은 그들이 s지점에서 www.acmicpc.net 🤔생각해보기 문제의 조건은 잘 읽어보면 간단하다. start → g → h → 목적지 start → h → g → 목적지 다익스트라 알고리즘을 활용하여 위 두 경로의 길이가 start → 목적지 의 최단 경로와 같은게 있다면 출력한다. 👨🏻💻코드 import sys import heapq def dijkstra(start): dist = {i: float('inf') if i != start else 0 for i in range(1, n + 1)} he..