일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 문자열
- 탐욕법
- 2018 KAKAO BLIND RECRUITMENT
- java
- 라이브템플릿
- 프로그래머스
- beandefinitionstoreexception
- Dijkstra
- counting elements
- javascript
- 파이썬
- 알고리즘
- API
- 백준
- Spring
- BFS
- brute force
- 소수
- error
- codility
- 2981
- 최단경로
- 코딩테스트
- Python
- applicationeventpublisher
- Greedy
- springboot
- algorithm
- spring security
- HTTP
- Today
- Total
목록algorithm (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..
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
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..
코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 🤔생각해보기 파이썬의 정렬은 순서가 뒤집히지 않는 stable 한 정렬을 구현하고 있다. 그러므로 정렬의 단계에 맞춰서 실행되게끔만 구현하면 된다. 방법은 다음과 같다. 문자열을 파싱하기 위해서 정규식을 사용한다. 정규식의 그룹을 활용하면 특정 부분을 쉽게 추출할 수 있다. 파이썬의 람다를 활용하면 정렬 조건을 넣을 수 있다. 튜플의 요소들이 순서대로 실행된다. 코드 import re def solution(files): p = re.compile(r..
코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr 🤔생각해보기 처음은 정규식으로 해결했는데 원인 모를 런타임 에러가 발생해서 정규식을 사용하지 않고 해결했다. 사실 "," 로 필요한 문자열을 구분할 수 있기 때문에 굳이 정규식을 쓰지 않아도 되고... 에러 찾는데 시간을 오래 허비해서 아쉽지만, 해결과정의 알고리즘은 간단한 편이다. "#" 을 그냥 처리할 수는 없으므로 2개의 문자를 하나로 변환해주는 과정을 구현해주는 것이 핵심 아이디어라 할 수 있겠다. 코드 def convert(string): ..