전체 글81 [프로그래머스][Java] 다단계 칫솔 판매 1. 문제 정보 https://school.programmers.co.kr/learn/courses/30/lessons/77486 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 난이도 : 레벨 3 유형 : DFS 2. 문제 풀이 이 문제에서 핵심적인 부분은 3개이다. 숫자가 아닌 문자열로 되어있는 인덱스 정보로 그래프 노드끼리 어떻게 연결시킬까? 그래프 탐색 시 종료 조건은? 판매 정보에 중복이 있을 수 있다. 1. 문자열 정보로 그래프 노드 매핑 굳이 문자열을 숫자로 따로 매핑하는 과정을 거치지 않아도 간단히 그래프를 그릴 수 있다. 해쉬맵을 이용하여 .. Algorithm, Problem Solving/프로그래머스 2024. 3. 22. [백준][Java] 1744 - 수 묶기 문제 정보 https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 난이도 : G4 유형 : DP 시간 : O(N), 정렬시간 제외 해결 방법 모든 수는 최대 한 번만 묶일 수 있다. 연속이 아닌 부분 수열의 합을 구하는 것이므로 수열의 원소의 위치가 변경돼도 상관없다. -> 정렬 가능 1. 직관적으로 큰 수끼리 곱해야 더 큰 수가 나오므로 주어진 수열을 정렬한다. 2. 오름차 순으로 정렬 시 왼쪽에서부터 오른쪽으로 진행 3. 탐색하면서 매 순간 dp.. Algorithm, Problem Solving/백준(boj) 2024. 3. 20. [Java] AtomicInteger - 자바 스트림에서 외부 변수를 변경할 수 있을까? 문제 상황 int a = 0; Arrays.stream(arr).map(value -> { value += a; a++; // 예외 발생 } ) 위의 코드처럼 외부 변수인 a를 스트림 안에서 변경을 하면 오류가 발생한다. 이유 Java Stream은 함수형 프로그래밍의 원칙을 따르기 때문에 부작용을 최소화하고 불변성을 강조한다. Stream은 데이터를 처리하는데 있어서 부작용을 최소화하고자 요소에 대한 연산을 수행할 때 각 단계에서 새로운 스트림을 생성하거나 기존 스트림을 변경하지 않고, 요소를 변환하는 연산들을 수행한다. 만약 외부 변수를 변경하면서 스트림을 사용하게 되면, 코드의 예측이 어려워지고 병렬 처리 및 lazy evaluation과 같은 이점이 상실될 수 있다. 결국 가변성이 있는 외부 요소.. Java 2024. 3. 15. [라즈베리파이4] Docker 설치하기 라즈베리파이4에 도커를 설치하는 방법입니다. 서버 환경마다 설치 방법에 차이가 있을 수 있으니 설치 전 꼭 확인해 주세요. 1. 설치 환경 HW : 라즈베리파이4 64bit Ubuntu 22.04.4 LTS Arch : arm64 Kernel : 5.15.0-1045-raspi 2. 패키지 업데이트 sudo apt update && sudo apt upgrade -y 3. 도커 설치 스크립트 다운로드 및 실행 curl -fsSL https://get.docker.com -o get-docker.sh // 설치 sudo sh get-docker.sh // 스크립트 실행 4. 도커 실행 권한 작업 sudo usermod -aG docker 사용자_계정 예시) sudo usermod -aG docker teo.. Linux/라즈베리파이 2024. 3. 15. [Git] error: src refspec main does not match any 해결 1. 문제 상황 - ubuntu server에서 repository를 clone 하여 작업한 후 commit 후 push 하는 과정에서 error 발생 - 위 사진은 clone한 레파지토리에 추가한 쉘스크립트의 git commit 및 push 부분 - 에러 문구 git push origin main error: src refspec main does not match any error: failed to push some refs to 'https://github.com/[user]/[repo]' 2. 문제 해결 - git 작업 전에 git pull을 통해서 원격 remote에서 최신 상태를 가져왔었음 - git log 통해서 commit 작업은 문제없음을 확인 - remote와 local의 branch.. 오류해결 2024. 2. 20. [백준][Java] 6129 - Obstacle Course 목차 문제 정보 https://www.acmicpc.net/problem/6129 6129번: Obstacle Course The cow must make at least 2 turns: For example, the cow may start by facing south, move south, turn to face west, move west, move west, then turn to face south, and finally move south into the B square. www.acmicpc.net 난이도 : G4 유형 : 다익스트라, BFS 문제 풀이 우선순위 큐를 이용한 다익스트라 기법을 활용하여 풀었다. (0-1 BFS라고도 봐도 무방하다) 우선순위 큐에 들어 있는 데이터는 '회전 횟수.. Algorithm, Problem Solving/백준(boj) 2023. 12. 11. [백준][Java] 2799 - 블라인드 목차 문제 정보 https://www.acmicpc.net/problem/2799 2799번: 블라인드 첫째 줄에 M과 N이 공백으로 구분해서 주어진다. (1 ≤ M, N ≤ 100) 다음 줄에는 현재 건너편 아파트의 상태가 주어진다. 모든 창문은 문제 설명에 나온 것 처럼 4*4 그리드로 주어진다. 또, 창문과 www.acmicpc.net 난이도 : S4 유형 : String, Implementation 시간 : O(N * M) 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { final.. Algorithm, Problem Solving/백준(boj) 2023. 12. 9. [백준][Java] 17175 - 피보나치는 지겨웡~ 목차 문제 정보 https://www.acmicpc.net/problem/17175 17175번: 피보나치는 지겨웡~ 혁진이는 알고리즘 문제를 만들라는 독촉을 받아 스트레스다. 하지만 피보나치 문제는 너무 많이 봐서 지겹기 그지없다. 그러나 문제를 만들 시간이 없는 혁진이는 피보나치 문제를 응용해서 www.acmicpc.net 난이도 : S3 유형 : DP 시간 : O(N) 문제 풀이 fibonacci 함수가 호출된 횟수를 구해야 한다. fibonacci의 정의를 생각해 보자 fibonacci[i] = fibonacci[i - 2] + fibonacci[i - 1] ( i return i) 피보나치함수 인자가 0 혹은 1 일 때 값을 리턴하고 종료하며 예외의 상황일 때 위의 식처럼 재귀문의 .. Algorithm, Problem Solving/백준(boj) 2023. 12. 7. [백준][Java] 20920 - 영단어 암기는 괴로워 목차 문제 정보 https://www.acmicpc.net/problem/20920 20920번: 영단어 암기는 괴로워 첫째 줄에는 영어 지문에 나오는 단어의 개수 $N$과 외울 단어의 길이 기준이 되는 $M$이 공백으로 구분되어 주어진다. ($1 \leq N \leq 100\,000$, $1 \leq M \leq 10$) 둘째 줄부터 $N+1$번째 줄까지 외울 단 www.acmicpc.net 난이도 : S3 유형 : 정렬, 해쉬 문제 풀이 문자들을 우선순위에 따라 정렬하는 것이 이 문제의 핵심이다. 일단 해쉬맵을 이용하여 문자열을 처리해야한다. 해쉬맵의 getOrDefault() 메소드를 활용하여 개수를 처리 해쉬맵의 데이터를 리스트로 전달하고 구현한 정렬로직을 통하여 리스트를 정렬하면 된다. 정렬로직.. Algorithm, Problem Solving/백준(boj) 2023. 10. 26. [백준][Java] 6907 - Floor Plan 목차 문제 정보 https://www.acmicpc.net/problem/6907 6907번: Floor Plan The floor plan of a house shows rooms separated by walls. This floor plan can be transferred to a grid using the character I for walls and . for room space. Doorways are not shown. Each I or . character occupies one square metre. In this diagram, there are www.acmicpc.net 난이도 : S1 유형 : BFS, 정렬 시간 : O(N x M) 문제 풀이 매우 기초적인 bfs문제 추가적으로.. Algorithm, Problem Solving/백준(boj) 2023. 10. 19. 백준 스트릭 600일 달성! 매일 알고리즘 문제 풀이를 하다 보니 백준 스트릭이 600일이 되었다! 스트릭 프리즈를 사용하지 않아서 더 성취감이 큰 것 같다. (추가로 백준 개근상 획득!) 대회는 포기한 지 오래됐고 코포도 쉬고 있기 때문에 어려운 문제는 풀고 있지 않다. 지금은 코테용 수준 위주로 매일 풀고 있다. 한창일 때는 이론서랑 논문을 뒤져가며 밤을 새우면서 매달렸는데 이제는 그런 열정이 없다... ps는 재능의 영역인 것을 깨달아버려서 그래도 매일 풀다보니 이젠 습관이 되어버린 것 같다. 지금처럼 계속 하다 보면 1000일도 달성하지 않을까...? 일단 열심히 해보자 기타 2023. 10. 18. [백준][Java] 5107 - 마니또 목차 문제 정보 https://www.acmicpc.net/problem/5107 5107번: 마니또 N명의 사람들이 있다. 이들은 각자 다른 한 명의 이름이 적힌 쪽지를 받아서, 그 사람에게 몰래 선행을 베푼다. 이때 자기 자신의 이름을 받을 수는 없으며, 선행을 받은 사람은 누가 자신을 도와 www.acmicpc.net 난이도 : S1 유형 : Cycle Disjoint-Set, DFS, Hash 문제 풀이 해쉬맵을 이용하여 입력으로 주어지는 사람 이름에 고유한 번호를 부여해 준다. 사람이름 두 개가 입력될 때마다 고유한 번호 두 개를 얻어낸 다음 연결하여 그래프를 구성하면 된다. 방문하지 않은 곳을 차례대로 DFS 탐색을 진행한다. 만약 탐색 로직 실행 중 이미 탐색했던 곳을 만난다면 순열을 이루는.. Algorithm, Problem Solving/백준(boj) 2023. 10. 15. 이전 1 2 3 4 5 ··· 7 다음