본문 바로가기

환영합니다. 이 블로그 번째 방문자입니다.

알고리즘

  (9)

[프로그래머스: JAVA] 키패드 누르기 문제 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다. 4-1...
[Q3:English] Kth largest element Given an array of integers arr and an integer k find the kth largest element. (1 ≤ k ≤ length of arr) For example, arr = [4,2,9,7,5,6,7,1,3], k = 4, output : 6. [ Method 1] # Logic Remove max element in the arr for k-1 times and return max element. # Code # Complexity T(n,k) : (k-1) * 2n + n = O(kn) S(n) : O(1) [Method 2] # Logic Use sorting # Code # Complexity T(n,k) : O(nlogn) + O(1) = O(nlogn..
[Q2:English] First and last index in sorted array 👇🏻 문제(이 정도는 해석X...귀찮,, 영어강의라 포스트도 영어로) Given a sorted array of integers arr and an integer target, find the index of the first and last position of target in arr. In targer can't be found in arr, return [-1,-1]. For example, arr = [2,4,5,5,5,5,5,7,9,9], target = 5 👉🏻 output : [2, 6] [Method 1] # Logic # Code # Complexity S(n) = O(1) T(n) = O(n) [Method 2] How about using binary search? Because i..
[Q1:Korean] Anagram, 철자 확인 👇🏻 문제 문자열 s1, s2가 주어졌을 때, 그들이 anagram인지 확인해라. 두 문자열이 같은 빈도의 같은 문자로 이루어졌다면 anagrams가 맞다. 예시 ) s1 = "danger" , s2 = "graden" 은 anagram이다. [ 방법 1 ] 기본 로직 freq1 = s1의 문자들의 빈도수 freq2 = s2의 문자들의 빈도수 freq1 == freq2 👉🏻 s1과 s2는 anagram 이 로직을 수행하기 위해서는 a~z까지의 알파벳 테이블에 문자가 얼마나 들어갔는지 cnt를 계산해서 비교할 수 있다. 하지만, Hash Table 을 쓰면 되는데 용량 낭비까지 할 필요는 전혀 없다. s1 = "nameless" , s2 = "salesman" freq1 == freq2 => s1과 s2는..
[➕ 오답노트] 백준 7576번 배열 BFS 👇🏻 문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 배열 자료구조의 DFS는 많이 풀어봤지만, BFS는 처음이다. 그래서 못 풀었다 ㅎ import sys from collections import deque M, N = map(int, sys.stdin.readline().strip().split()) tomato = [list(map(int, sys.stdin.readline().strip().split())) for..
Binary Search, 이진 탐색 이진탐색은 정렬된 배열 안에서 타깃 값의 인덱스를 찾는 탐색 알고리즘이다. 이진탐색은 배열의 중간 인덱스의 값을 타깃 값과 비교해 타깃 값의 인덱스를 찾는다. 1. 문제 상황 문제 상황을 가정해 보자. 우리는 숫자 X가 위의 배열에 존재하는지 살펴볼 것이다. ⓵ X = 21 , 3번 인덱스에 존재 ⓶ X = 25 , 존재하지 않음 ⓷ X = 81 , 7번 인덱스에 존재 위의 상황을 해결하는 가장 간단한 방법은 배열을 전부 스캔해 X 값을 찾는 것이다. 0번 인덱스로부터 시작해, 타깃 값을 찾으면 인덱스 반환 및 종료를 하면 된다. 다만, 존재하지 않는 것을 알기 위해서는 8번 인덱스까지 스캔해야만 한다. 이 탐색 법은 최악의 경우, 배열의 사이즈만큼의 시간 복잡도가 필요하다. 다행히도, 이 상황을 선형 ..
DFS & BFS (3) : 노드 탐색 👇🏻 출처 더보기 https://www.youtube.com/watch?v=tWVWeAqZ0WU 2022.04.28 - [Python/[Algorithm] 알고리즘] - DFS & BFS (2) : 경로 탐색 DFS & BFS (2) : 경로 탐색 🔹 출처 더보기 https://www.youtube.com/watch?v=tWVWeAqZ0WU 2022.04.26 - [Python/[Algorithm] 알고리즘] - DFS & BFS, 깊이 우선 탐색과 넓이 우선 탐색 (1) DFS & BFS, 깊이 우선 탐색과 넓이 우선 탐색 (1).. sennieworld.tistory.com { 무방향 그래프 사이클 개수 찾기 } 위의 그래프에 연결되어 있는 노드의 집합은 {1,2}, {4,5,6,7,8}, {3} 으..
DFS & BFS (2) : 경로 탐색 🔹 출처 더보기 https://www.youtube.com/watch?v=tWVWeAqZ0WU 2022.04.26 - [Python/[Algorithm] 알고리즘] - DFS & BFS, 깊이 우선 탐색과 넓이 우선 탐색 (1) DFS & BFS, 깊이 우선 탐색과 넓이 우선 탐색 (1) 출처 : 더보기 https://www.youtube.com/watch?v=tWVWeAqZ0WU DFS와 BFS는 그래프 자료 구조를 이용한다. 더보기 2022.04.24 - [Python/[Data Structure] 자료구조] - [11] Graph, 그래프 [11] Graph, 그래프 어쨌.. sennieworld.tistory.com { 경로 찾기 } 출발 노드에서 도착 노드까지 경로가 있는지 탐색 : 있으면 tr..
DFS & BFS (1) : 그래프 순회 출처 : 더보기 https://www.youtube.com/watch?v=tWVWeAqZ0WU DFS와 BFS는 그래프 자료 구조를 이용한다. 더보기 2022.04.24 - [Python/[Data Structure] 자료구조] - [11] Graph, 그래프 [11] Graph, 그래프 어쨌든 계획한 목록에서는 마지막 챕터이다. 그래프!!!!!!!!!!!!!! 오늘의 짤은 따로 없을 예정 하하 그래프도 참 나를 괴롭게했지...하...(기싫다).... 그림 출처 :https://python.plainenglish.io/graph-data-st.. sennieworld.tistory.com DFS : 말 그대로, 방향 그래프에서는 시작 노드부터 방향을 따라 깊숙히 탐색하는 것이다. BFS : 노드의 이웃 ..