알고리즘 문제풀이 181

[Java] 프로그래머스: 게임 맵 최단거리

https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이방법사용된 것:BFS     2025.03.28BFS 문제이다.각 칸의 정보는 길이가 3인 int 배열로 표현할 수 있다.이 배열의 요소들은 각각 {행 인덱스, 열 인덱스, 출발점에서 해당 칸까지 오는 동안 거쳐온 칸 수}따라서, Queue를 사용해 BFS를 구현하면 된다. answer의 값을 -1로 초기화한다.목적지에 도달하는 순간, 그곳까지 오는 동안 거쳐온 칸 수를 answer에 넣어준다. BFS가 끝난 후 answer을 리턴해준다.만약..

[Java] 프로그래머스: 완주하지 못한 선수

https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이방법 2025.03.27참가자 명단에는 있지만 완주자 명단에는 없는 선수의 이름을 찾아내야 한다.그 선수는 반드시 한 명이다. 명단에는 동명이인이 존재할 수 있다. 따라서 Set을 썼다가는 동명이인을 잡아내지 못해 틀릴 가능성이 높다. 푸는 과정에서, 정확도 테스트를 모두 통과한 코드를 총 4가지 작성해보았다. 아래와 같다. 첫 번째 시도: ArrayList 사용참여자 명단의 모든 요소를 ArrayList에 넣은 뒤, 완주자 명단의 모든 ..

1주차: 그리디 - 사전 문제 풀이

백준, 프로그래머스 등에서 제공되는 문제의 경우 문제 링크를 첨부하고,도서에 수록된 문제의 경우 문제 본문을 간략화하여 옮겨적는다.공통문제 1) 1이 될 때까지(도서 p.99에 수록)두 수 N과 K가 주어진다.2 ≤ N ≤ 100,0002 ≤ K ≤ 100,000N이 1이 될 때까지 다음의 두 동작 중 한 가지를 최소 몇 번 수행해야 하는지 구하시오.N에서 1을 뺀다.N을 K로 나눈다. 풀이N의 값을 업데이트해가며, N의 값이 1이 될 때까지 다음을 반복 수행한다.현재 N의 값이 K의 배수일 경우, N을 K로 나눈다.현재 N의 값이 K의 배수가 아니며 K보다 작을 경우, N이 1이 될 때까지 N에서 1을 뺀다.현재 N의 값이 K의 배수가 아니며 K보다 클 경우, N이 K의 배수가 될 때까지 N에서 1을..

#1541: 잃어버린 괄호

풀이방법사용된 것:그리디파싱    2025.03.07마이너스 기호가 등장하기 전까지는 모든 정수를 덧셈한다.마이너스 기호가 한 번이라도 등장하면, 그 뒤로는 모든 정수를 뺄셈한다.   코드Java(2025.03.07)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws IOException { int answer = 0; // 입력값 읽어오기 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));..

0주차: 스터디그룹에 관하여

개요친구들과 알고리즘 스터디그룹을 시작하였다.동아리에서 처음 만나, 졸업프로젝트와 도전학기를 함께 성공적으로 마치고, 사이드프로젝트까지 함께하고 있는 친구들이다. 스터디 규칙매주 한 가지의 알고리즘 카테고리를 정한다.해당 카테고리에서 다음과 같이 문제를 풀어온다.공통 문제 2개개인 문제 1개 이상매주 있는 정기모임에서, 작성해온 코드를 공유하고 설명한다. 다짐취업준비 시작에 맞추어 알고리즘 복습이 필요했기 때문에, 스터디를 시작하게 되었다.이 스터디를 동기로 삼아 제대로 복습하고, 더 어려운 알고리즘에도 도전해보자!

#11723 : 집합

풀이방법 사용된 것: 구현 2023.09.20 실제로 Set을 선언하여 구현하면 시간초과가 발생한다. 이번에는 1차원 Boolean 배열을 사용하여 해결하였다. 후에 비트마스크를 사용해서도 시도해보겠다. 코드 Java(2023.09.20) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.HashSet; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException{ // TODO..

#18110 : solved.ac

풀이방법 사용된 것: 수학 구현 정렬 2023.09.20 의견의 개수 N이 0이라면, 0을 출력하고 프로그램을 종료한다. 의견의 개수 N이 1 이상이라면, 다음을 수행한다. N의 0.15배를 계산하여 이를 반올림한다. 이 결과를 M이라 하자. 모든 의견을 오름차순으로 정렬한 배열에서, 인덱스 M부터 N-M-1까지를 더한 후, 그 값을 2M으로 나눈 후 반올림한다. 코드 Java(2023.09.20) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main { public static void main(String[] ar..

#5358 : Football Team

풀이방법 2023.09.05 주어진 문자열에서, i는 e로 바꾸고 e는 i로 바꾸고 I는 E로 바꾸고 E는 I로 바꾸어 출력하는 문제이다. 조건문을 사용하여 문자열의 모든 문자를 확인한 후, i, e, I, E에 해당하는 문자가 발견될 경우 변경하면 된다. 코드 Java(2023.09.05) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException{ // TODO Auto-generated method stub BufferedReader br = new Buf..

#11279 : 최대 힙

풀이방법 사용된 것: 우선순위 큐 2023.05.17 자바의 PriorityQueue 클래스를 사용하면 되는 간단한 문제이다. 코드 Java(2023.05.17) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Collections; import java.util.PriorityQueue; public class Main { public static void main(String[] args) throws IOException{ // TODO Auto-generated method stub // 입력값을 읽어오기 위한 BufferedReader Buffere..

#14244 : 트리 만들기

풀이방법 2023.05.15 이해하기가 조금 어렵지만, 이해하고 나면 구현하기 매우 쉬운 문제이다. 트리를 구현할 필요는 없다. 트리의 개념을 잘 이해하기만 하면 간단한 반복문 및 조건문으로 해결할 수 있다. 푸는 방법은 여러 가지가 있는데, 내가 사용한 방법만 설명하겠다. 리프가 2개여야 하는 경우와 리프가 3개 이상이어야 하는 경우로 나누어서 풀었다. 먼저, 리프가 2개인 경우, 모든 노드가 일직선으로 연결되어야 한다. 사이클을 만들 수 없으므로 리프가 2개일 수 있는 경우는 딱 이 경우 하나밖에 없다. 리프가 3개인 경우 트리를 만드는 방법은 매우 다양해지는데, 여러 방법 중 내가 선택한 것은 다음과 같다. 0번 노드를 중심으로 두고, 필요한 리프 개수만큼의 노드를 0번 노드에 따로따로 연결해준다...