본문 바로가기

공부/알고리즘49

[백준]1916_최소비용 구하기_다익스트라 인접행렬, 인접리스트 Java풀이 + 반례 1916번: 최소비용 구하기 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net 처음에 인접행렬로 풀었더니 애먹은 경우가 있었다. 그래서 총 3가지 풀이를 준비했다. 1. 인접행렬 int [][] map = new int[N+1][N+1]; 2. 인접리스트 ArrayList [] map = new ArrayList[N+1]; 3. 인접리스트 ArrayList 0 1번 풀이 package Graph; // 다익스트라 ( 음이 아닌 가중 그래프에서 단일 쌍, 단일 출발, 단일 도착).. 2023. 2. 8.
[백준]17413_단어 뒤집기 2_Java 풀이 17413번: 단어 뒤집기 2 풀이 첫 풀이 문자열을 “ “ 띄어쓰기 단위로 잘라서 (StringTokenizer 사용) → word 단위로 만듬 띄어쓰기 없이 잘라진 것에서 그 길이만큼의 반복문 안에서 tag 안에 있는 것인지 밖에 있는 것인지 구별하여 tagBuilder나 reverse라는 스택 안에 넣어주는 방식으로 풀이 자세한 사항// > 로 끝났을 때 tag가 끝난 것이기 때문에 tagBuilder에 쌓인 값 answer에 넣어주기 package etc; import java.io.*; import java.util.*; public class Main_17413 { public static void main(String[] args) throws IOException{ BufferedReade.. 2023. 2. 4.
[프로그래머스]42576_완주하지 못한 선수_Java 풀이 2가지 https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 처음에는 Array의 기본 내장 정렬을 이용하여 풀었다. 두 번째 방법으로는 기본 문제 카테고리와 같은 HashMap을 사용하여 풀었다. 중간에 주의할 점은 코드에 주석으로 달아놓았다. 역시 Hash가 엄청나게 빠르다. 코드 HashMap 사용한 풀이 package Hash; import java.util.Arrays; import java.util.HashMap; import java.ut.. 2023. 1. 25.
[백준]1018_체스판 다시 칠하기_Java 풀이 https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 4중 for문을 돌며... 맨 위 왼쪽이 B로 시작하는지, W로 시작하는지 두가지 상황으로 나누어서 각각의 경우에 다른 값이 있는 개수를 각각 저장한다. -> 최소값을 비교 왼쪽 위가 B로 시작하는 경우 BWBWBWBW WBWBWBWB BWBWBWBW WBWBWBWB 와 같은 형태 왼쪽 위가 W로 시작하는 경우 WBWBWBWB BWBWBWBW WBWBWBWB BWBWBWBW 와 같은 형태 .. 2023. 1. 24.