일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- element tree
- 완전탐색
- 거리알고리즘
- 재귀
- 프로그래머스
- 앱아이콘 변경
- Android
- flutter
- 초기화
- dfs
- Singleton
- IOS
- Render object tree
- 자료구조
- 프리즈드
- 알고리즘
- 비동기 처리
- 코틀린
- linebreak
- 플러터 동작
- 자바
- 플러터
- zwj
- 에러
- 싱글톤
- dart
- Java
- Kotlin
- Widget Tree
- Lazy
- Today
- Total
목록알고리즘 (19)
모바일 개발하는 자바리안의 메모장
https://programmers.co.kr/learn/courses/30/lessons/42883# 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 와 이건 dfs로 모든 조합 구해서 풀면 되겠다! 하고 풀었다가 좌절한 문제.. 고수님들의 설명을 참고하여 그리디 알고리즘을 사용하여 더 간결하고 직관적인 코드로 답을 찾을 수 있었다.. number의 첫번째 숫자부터 순서대로 Stack에 넣어준 뒤, 다음 인덱스의 숫자를 확인 할 때, 그 숫자가 마지막에 넣은 숫자보다 큰지 확인 후 바꿔주며 삭제된 숫자의 개수를 카운트해준다. 이렇게 카운트된 값은 삭제할 숫자 개수, k보다 작은지 비교해주기 위해 사용한다. 상기 그리디한 작업을 반복하며, number의 길이 - k 길이를 유지해주며 s..
https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 다 됐다 싶었으니, 몇몇 실패 케이스 때문에 시간이조금 소요됐다. (디버깅이 상당히 어려웠..
https://programmers.co.kr/learn/courses/30/lessons/64065 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 2레벨 치고는 어렵지 않았던 문제, 늘 그랬듯이 문제를 이해하는데에 조금 어려움이 있었으나, 풀이 과정을 보면서 쉽게 요하는 부분을 파악할 수 있었다. 코드는 크게 2스탭으로 나뉘는데, 1. 투플 원소를 만들어 2차원 배열에 담아준다. 2. 투플 원소를 담은 2차원 배열과 HashSet을 활용하여 중복되지 않은..
https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 오랜만에 올바른 접근으로 깔끔하게 풀어낸 문제였다. 조금 잘못 이해한 부분이 있어서 디버깅 중에 어려움이 있었지만 어렵지 않게 고칠 수 있었다. dfs로 앞에서부터 한글자씩 붙여나가며 u가 "균형잡힌 괄호 문자열"인지 "올바른 괄호 문자열"인지 확인하고, 문제에 기재된 알고리즘을 적용한 뒤, base가 되는 string을 초기화, 동일한 스탭을 반복하여 정답을 찾..
https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 단순한 String관련 문제인 줄 알았으나,, 각 course 길이의 음식 조합을 카운트 하는 게 핵심인 문제였다. dfs 기반의 combination 함수를 이용하여 가능한 모든 조합을 구할 수 있었다. 각 코스와 조합된 메뉴의 개수가 동일할 경우 Map에 넣어주며, 중복되는 메뉴들은 value로 카운트 해준 뒤에 value 기준으로 정렬. 정렬된 맵에서 가장 ..
https://programmers.co.kr/learn/courses/30/lessons/1835 코딩테스트 연습 - 단체사진 찍기 단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두 programmers.co.kr 문제 이해하는데에 조금 어려움이 있었던 문제... 처음에는 String 정렬 쪽을 생각하며 한참을 고민하다가 존경하는 고수님의 풀이를 참고하여 문제를 풀 수 있었다. 정답은 DFS에 있었다. 각 프랜즈의 배치 + 검증 매소드를 통해 몇개 조합이 조건에 만족하는지 어렵지 않게 구할 수 있었다. DFS 함수 안의 for문을 통해 각 프랜즈의 조합을 String으로..
https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 처음 문제를 접했을때는 n진수 계산 방법으로 접근하면 되겠구나라고 생각했지만 쉽지가 않았다... 밤을 샐 것 같아, 고수님들의 솔루션을 통해 공통되지 않는 숫자 중 3을 나눴을 때의 값과 나머지를 이용하는 방법을 접하게 되었고, 추가로 나머지가 0일 경우 몫에서 1을 빼주며 계산을 반복하니 쉽계 답을 원하는 답을 얻을 수 있었다. 124나라에서의 두자리 숫자 24, 10진수로는 9의 풀이과정을 예로 보자. 1. 첫 셈에서 9을 3으로 나누면 몫이 3, 나머지가 0 > 나머지가 0이니 몫에서 1을 뺀 2를 다음 셈으로 가져간다. 2. ..
https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 오랜만에 다시 알고리즘 공부를 하니 감이 많이 죽었다. 스택으로 간단하게 풀 수 있는 문제였는데, 뭔가에 홀린듯 while 안에서 for loop을 돌리다가 효율성에서 좌절,, Stack에 하나씩 넣으며 pair가 되는 타이밍에 pop을 해주며 마지막에 아무것도 남아있지 않으면 모두 제거되었음을 쉽게 알 수 있는 문제였다.. import java.u..
https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 유호석 강사님의 알고리즘 강의 중, 투포인터를 배우며 접한 예제 문제. 두개의 포인터를 활용하여 [정답을 찾기 위해 봐야 하는 것들]에 접근할 수 있는 알고리즘이다. 즉, 답을 구하기 위한 정말 필요한 데이터에만 접근하여 전체적인 탐색범위를 크게 압축할 수 있는 알고리즘이다. 이번 예제는 주어진 수열에서 L(eft), R(ight) 두 포인터를 활용하여, 확인한 범위를 줄이고 늘리며..
https://programmers.co.kr/learn/courses/30/lessons/60060 코딩테스트 연습 - 가사 검색 programmers.co.kr 완전탐색으로 풀었다가 효율성 테스트에서 좌절,, 풀이를 찾다가 Trie라는 자료구조에 대해 처음 접할 수 있었다. Trie는 아래와 같이 Tree 형태로 String을 Character로 쪼개어 각 노드에 입력한다 : 새로운 문자열을 추가할 때마다 문자열에 포함된 Charcter 노드의 카운트수를 더해준다. 각 Query에서 ?가 위치한 바로 앞 Character 노드의 Count를 반환하여 답을 구할 수 있었다. 실행 순서는 다음과 같다 : 1. Trie와 Node 클레스 및 입력, Count 메소드 생성 2. 입력 문자열 & Reverse..