일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Python
- 코딩테스트
- Dijkstra
- spring security
- Spring
- 라이브템플릿
- error
- beandefinitionstoreexception
- 탐욕법
- API
- java
- javascript
- springboot
- 2018 KAKAO BLIND RECRUITMENT
- Greedy
- 알고리즘
- 백준
- brute force
- 2981
- applicationeventpublisher
- 문자열
- 최단경로
- codility
- 파이썬
- counting elements
- 소수
- algorithm
- HTTP
- 프로그래머스
- BFS
- Today
- Total
목록백준 (32)
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))
1356번: 유진수 1356번: 유진수 첫째 줄에 수 N이 주어진다. 이 수는 2,147,483,647보다작거나 같은 자연수이다. www.acmicpc.net 🤔생각해보기 나누어진 문자열의 길이조절을 위한 roop 를 실행시키며 좌우로 slice 한 후, 숫자로 변환하여 곱연산을 수행합니다. 만약 이 때 나누어진 둘의 결과값이 같다면 answer 를 "YES" 로 바꾸고 roop 를 종료합니다. answer 를 출력합니다. Code from functools import reduce N = input() answer = "NO" for i in range(1, len(N)): # 문자열 분할 prev = reduce(lambda x, y: x * y, map(int, list(N[:i]))) cur = ..
1919번: 애너그램 만들기 1919번: 애너그램 만들기 두 영어 단어가 철자의 순서를 뒤바꾸어 같아질 수 있을 때, 그러한 두 단어를 서로 애너그램 관계에 있다고 한다. 예를 들면 occurs 라는 영어 단어와 succor 는 서로 애너그램 관계에 있는데, occurs www.acmicpc.net 🤔생각해보기 브론즈2 답지 않게 문제는 엄청 복잡하게 적어놨지만, 정리해보면 두 문자열에서 동시에 포함하지 않은, 서로의 문자열에만 포함된 문자열을 찾는 문제입니다. set() 을 사용하면 집합 연산을 사용할 수 있지만, 중복이 제거되면서 개수를 파악하기 힘들게 될 수 있기 때문에, Counter 를 사용해주었습니다. Code from collections import Counter a = Counter(in..
1969번: DNA DNA란 어떤 유전물질을 구성하는 분자이다. 이 DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있다(Adenine, Thymine, Guanine, Cytosine). 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클레오 www.acmicpc.net 🤔생각해보기 처음에는 문제가 무슨 뜻인지 이해가 잘 되지 않았어서 한참을 들여다본거 같다. 새로운 DNA 배열을 만들고 싶은데 다른 DNA들과 비교했을 때 각 위치의 문자가 다른 것의 합계가 가장 작은 새로운 DNA 배열이 만들고 싶다라는 말이 뭐가 이렇게 길고 복잡한건지... 염기서열을 쭉 늘어놓았을 때 각각의 위치에서 가장 많은 문자는 무엇인지 세는 것으로 시작한다. 위치마다 가장 많은 문자를 골라내서 새로운 DN..
10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net 🤔생각해보기 최근 난이도를 볼 수 있게 된 이후 브론즈 단계의 문제는 객관적으로 참고할 일이 거의 없을 것 같아서 따로 작성하지 않았다. 하지만 이 문제는 난이도를 떠나 풀이 방법이 꽤나 다양하게 나올 수 있고 그 과정이 개인적으로 재미있었기 때문에 작성해본다. 로직은 문제에서 설명해준 그대로 세로로 읽게 하면 된다. 아무래도 반복문을 사용하는 풀이가 많이 보이던데, 그러면 depth 의 증가를 피할 수 없으므로 zip() 을 활용해서 풀어보았다. Code..
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..
2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 🤔생각해보기 처음 떠올린 방법은, visited 와 똑같은 crashed 라는 배열을 만들어놓고 벽을 뚫었을 때 체크하는 방법과 3차원 배열을 활용해서 풀어보는 방법이다. 개인적으로는 2차원 배열도 머리가 복잡해져서 꺼리게 되는지라 3차원 배열 활용은 뒤로 미루고 crashed 라는 새로운 배열을 만들어놓고 활용해보려 했는데, 잘 안풀리고 오히려 더 복잡해져서 결국 1시간이나 더 써서 3차원 배열로 풀었다. (처음부터 그냥 곱게 3차원 ..