문제 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 풀이 브루트포스는 늘 정말 이 방법 뿐일까..? 싶어서 주저하게 된다. M과 N이 모두 20 이하의 수라서 브루트포스로 다 돌려줬다. lock에 key를 끼워봐야하는데, 키가 락 위에 일부분만 걸쳐있어도 되는거라 락의 주위로 빈 공간을 만들어주는게 포인트인 문제. 사실 그렇게 풀지 않아도 되는 방법이 있겠지만 빈 공간을 만들어주면 포문만 돌리면 돼서 편리하다. 포문이 많으면 범위를 자꾸 실수해서 그러지 않으려고 옆에 그림을 그려두고 했는데도 실수했다. 시험 당일엔 사소한 실수에 말린다 ㅜㅜ 만약 답이 안나..
문제 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴� programmers.co.kr 풀이 구현 자체는 전혀 어렵지 않은 문제다. 다만 스텝바이스텝 정확하게 뭘 하라는건지 설명을 이해하는게 어려웠다 3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시 수행합니다. 수행한 결과 문자열을 u에 이어 붙인 후 반환합니다. 4-2. 문자열 v에 대해 1단계부터 재귀적으로 수행한 결과 문자열을 이어 붙입니다. 1단계부터 어디까지 하라는건지 고민했는데 알고보니 전체 solution함수 자체를 돌리라는 말이었다. 교훈: 문제..
문제 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 풀이 들어온 문자열 중 출력해야하는 명령은 큐에 담아 관리했고, uid와 닉네임 관리는 파이썬의 dictionary 자료형을 사용해서 관리했다. from collections import deque def solution(record): # 큐로 관리 queue = deque() dic = {} # 문자열 하나씩 for each in record: cmd = each.split(" ")[0] uid = each.split(" ")[1] if cmd == "..
문제 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 � www.acmicpc.net 풀이 import sys N = int(sys.stdin.readline()) li = [] for _ in range(N): line = sys.stdin.readline().strip().split(" ") li.append((int(line[0]), line[1])) for each in sorted(li, key= lambda x: x[0]): print(each[0], end=" ") print(each[1])
계수 정렬(Counting Sort)이란 원소끼리 비교를 하지 않고 원소가 몇번 등장하는지 갯수를 세서 정렬하는 방법이다. 따라서 비교정렬이 아니고 같은 원소의 순서가 바뀌지 않는 안정정렬(stable sort)이다. 시간복잡도는 O(n + k)으로 퀵정렬, 병합정렬에 비해 일반적으로 빠르다. k: 정렬할 수들 중 가장 큰 값 n: 정렬할 수의 개수 만약 k가 n보다 작은 수이면 O(n)이 되지만, k가 n보다 매우 큰 수이면 O(무한)이 될 수도 있다. 가장 큰 숫자에 영향을 받는다는 단점이 있다. 만약 정렬해야하는 리스트가 [0, 1, 9999]일때는 배열에 2부터 9998까지 불필요한 공간을 만들어야하기 때문에 비효율적이다. 또, n의 값이 너무 커지면 일반 정렬 알고리즘보다 느려질 수 있으므로 적..
문제 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 그동안 수 정렬하기 문제가 있을때는 간편하게 파이썬의 sorted()를 사용했지만, 이 문제는 메모리 제한이 있어서 카운팅 소트를 사용해서 풀어야 한다. 카운팅소트(Counting Sort)란 https://yuuj.tistory.com/106 [정렬] 계수 정렬 (카운팅소트, Counting Sort) 계수 정렬(Counting Sort)이란 원소끼리 비교를 하지 않고 원소가 몇번 등장하는지 갯수를 세서 정렬하는 방법이다. 시간복잡도는 O(n + k)으로 퀵정렬, 병합..
문제 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1≤N≤20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 풀이 파이썬을 사용하면 아주 간단하게 풀 수있지만 문제를 제대로 안읽어서 3번이나 시도한 문제 중복제거해야하는걸 못봐서 한번 틀리고, 출력 형식을 리스트 째로 하는바람에 한번 더 틀렸다. 집중하자 제발 ㅠㅠ * 람다를 사용하면 한개 이상의 키로 정렬을 할 수 있다. key=lambda x: (len(x), x)) import sys N = int(sys.stdin.readline()) li = [] for _ in range(N): li.append(s..
문제 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 풀이 collections 모듈의 Counter 클래스에있는 most_common() 메쏘드는 등장한 횟수를 내림차순으로 정리해서 보여준다. 메쏘드 이름이 most_common이라 가장 빈도가 높은 아이템만 리턴하는줄 알았는데 빈도가 높은 순으로 전체를 리턴한다. import sys from collections import Counter N = int(sys.stdin.readline()) li = [] for _ in range(N): li.append(int(sys.stdin.readl..
- Total
- Today
- Yesterday
- 프로그래머스
- TextFormField keyboard
- 카카오 기출
- 시뮬레이터 키보드
- flutter simultor
- 카카오 키해시
- 코틀린 데이터바인딩
- 백준 1806
- 안드로이드 카카오톡으로 로그인
- 백준알고리즘
- counting sort
- 안드로이드
- 파이썬 최대공약수
- 코틀린 뷰바인딩
- 안드로이드 키해시
- 투포인터 알고리즘 파이썬
- 코틀린
- 백준 1644
- 투포인터 알고리즘
- 코틀린 뷰페이저
- 코틀린 리스트뷰
- kotlin fragment
- 데이터바인딩 뷰바인딩 차이
- 카카오톡으로 로그인 오류
- 코틀린 바텀네비게이션
- 백준 2003
- 전화번호목록 파이썬
- 백준
- 소수 구하기 파이썬
- Kotlin
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
