알고리즘과 언어
-
tail -f 보다 효율적인 less +F알고리즘과 언어/shell(bash) 2022. 6. 2. 17:06
https://jongmin92.github.io/2018/03/29/Linux%20&%20Ubuntu/less/ tail -f 보다 효율적인 less +F에 대해 알아보자 Stop using tail -f얼마전 tail -f를사용하며 스크롤 기능을 사용하고 싶어 검색하던 중 less +F를 알게 되었습니다. less +F에 대해 잘 설명한 글이 있어 번역해보려 합니다. 해당 글은 Stop using tail -f (mostly jongmin92.github.io 하나의 파일을 모니터링할 때는 less +F가 편리. (navigation과 watching 모드 전환이 쉽기 때문에) 다수의 파일은 안된다. ctrl-c로 네이게이션 모드로 변경해서 전체 파일을 읽듯이 확인 가능하고, F를 눌러 모니터링 모드..
-
C++) 프로그래머스 디스크 컨트롤러알고리즘과 언어/문제풀이 2022. 4. 28. 21:22
문제 https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 내 풀이 솔직히 반신반의하며 방향을 설정해서 풀었는데 운이 좋아서 맞았다. 1) jobs를 들어온 순서대로 정렬하였으며 (job[0]을 오름차순으로) 2) while 문을 전체 job들이 모두 빠져나올 때까지 돌렸다. (job 하나가 완료될 때 마다 finishCount가 올라감) 3. while문 내에서는 3-1. 현재 시각 이하의 모든 Job들을 ..
-
C++ ) 백준 1743알고리즘과 언어/문제풀이 2022. 3. 23. 06:51
문제 https://www.acmicpc.net/problem/1743 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net N X M 맵에 상하좌우로 붙어있는 숫자들 중에 가장 큰 값(MAX)을 찾는 문제이다. 상하좌우 인접한 숫자들을 찾는 BFS를 사용해 풀었다. 로직 1. N X M 맵에 입력받기 (#은 1로, .은 0으로) 2. 좌표 y, x에 대하여 map이 '#'이거나 가보지 않은 곳이라면 checkmap에 가봤다고 표시하고 BFS 호출 3. Queue에 (y, ..
-
Java는 모두 call by value다?알고리즘과 언어/java 2022. 3. 23. 05:26
얼마 전 개발자 형에게 Java가 모두 call by value라는 이야기를 들었다. C/C++에 익숙했던 나는 이해가 되지 않았다. 'Call by reference가 없으면 어떻게 내부의 값을 변경하지?' 'Java에서도 분명 함수로 주소값을 주고 받을 일이 있을텐데..' 등등 다양한 의문이 생겼다. 우선, 간단한 Swap에 대해서 찾아봤다. 자바는 포인터가 없어 간단한 Swap 구현 코드도 복잡하다. 1. 배열을 이용하는 방법 public class Main { public static void swap(int[] arr) { int temp = arr[0]; arr[0] = arr[1]; arr[1] = temp; } public static void main(String[] args) { int..
-
C++ ) 백준 2003 수들의 합 2알고리즘과 언어/c++ 2022. 3. 9. 19:34
문제 https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 내 풀이 투 포인터를 사용해서 풀었다. 투 포인터란 front와 back 포인터를 설정한 후에 front와 back을 한칸씩 이동하며 조건과 부합하는지를 찾는 알고리즘이다. 이 문제는 '연속하는' 수들의 합을 찾기 때문에 front와 back 사이의 모든 값들을 더한 SUM을 갱신하는 투 포인터와 알맞다고 할 수 있다. O(1)의 시간복잡도를 가지므로..
-
다익스트라 알고리즘알고리즘과 언어/common 2022. 3. 2. 12:32
✔️ 다익스트라 최단 경로 알고리즘 개요 : 특정한 노드에서 출발하여 다른 모든 노드로 가는 최단 경로 계산 음의 간선이 없을 때 정상적으로 동작 (현실 세계와 유사) 그리디 알고리즘으로 분류 (매 상황에서 가장 비용이 적은 노드를 선택해 임의의 과정을 반복) ✔️ 동작 방법 1. 출발 노드 설정 2. 출발 노드 기준으로 각 노드의 최소 비용 저장 3. 방문하지 않은 노드 중에서 가장 비용이 적은 노드 선택 후 방문 노드로 설정 4. 해당 노드를 거쳐 특정한 노드로 가는 경우를 고려하여 최소 비용 갱신 5. 3~4번 반복 [문제] https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, ..
-
C++ ) 백준 17090 미로 탈출하기알고리즘과 언어/c++ 2022. 2. 17. 04:21
문제 https://www.acmicpc.net/problem/17090 17090번: 미로 탈출하기 크기가 N×M인 미로가 있고, 미로는 크기가 1×1인 칸으로 나누어져 있다. 미로의 각 칸에는 문자가 하나 적혀있는데, 적혀있는 문자에 따라서 다른 칸으로 이동할 수 있다. 어떤 칸(r, c)에 적힌 문 www.acmicpc.net 풀이 3 Try만에 문제를 풀 수 있었다. 처음에는 R * C 의 모든 칸을 시작점으로 방향을 따라가도록 했다. DFS처럼 사방으로 퍼지지 않고 방향이 정해져 있기에 연산이 현저히 많을 것이라고 생각하지 않았었다. 그러나 2 try에서 모두 타임아웃이 나는걸 확인하며, CheckMap을 만들어 메모이제이션을 이용하여 풀었다. (메모이제이션에 대해 궁금하면 DP에 대해 찾아보세..
-
C++ ) 백준 3055 탈출알고리즘과 언어/c++ 2022. 2. 16. 19:04
문제) https://www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net BFS가 같은 맵에서 2번 진행되어야 하는 문제다. 1. 젖은 물의 공간이 확장되며 (BFS) 2. 고슴도치의 최소 거리를 구해야 한다. (BFS) 구현 자체는 어렵지 않으나 3가지를 어떻게 해결할 것인지가 관건일 것 같다. 1. 고슴도치는 물에 젖게 될 곳에도 가면 안된다. -> 젖은 물의 공간을 먼저 확장하고, 그 다음으로 고슴도치의 BFS를 진행함으로써 해결했다. 2. 서로 다른 지점에서의 BFS..