목록2023/10 (8)
코디잉
https://www.acmicpc.net/problem/4485 4485번: 녹색 옷 입은 애가 젤다지? 젤다의 전설 게임에서 화폐의 단위는 루피(rupee)다. 그런데 간혹 '도둑루피'라 불리는 검정색 루피도 존재하는데, 이걸 획득하면 오히려 소지한 루피가 감소하게 된다! 젤다의 전설 시리즈의 주 www.acmicpc.net 접근 방식) 다익스트라 1. int[][] map을 생성해서 각 칸의 도둑루피를 저장해준다. 잃게 될 최소 루피를 저장할 int[][] rupee 배열을 Integer.MAX_VALUE로 초기화해준다. 2. map[0][0] 을 시작점으로 BFS를 시작해서 각 지점마다 상하좌우로 돌면서 최소 루피를 구해 rupee[][] 값을 갱신한다. 3. BFS에서는 queue대신, 잃게되는..
https://www.acmicpc.net/problem/2559 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net 접근 방식) 누적합 1. 입력받은 온도 수열을 누적합 배열로 저장한다. 누적합 배열은 prefixSum[i] = prefixSum[i - 1] + 현재입력값 으로 저장하기 위해서 int[] prefixSum = new int[N + 1]; 로 생성한다. 2. K부터 누적합배열 끝까지 돌면서, K일의 온도 합이 max값보다 크면 max를 업데이트해준다. ex) index 2 ~ 5 까지..
https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 접근 방식) 시간 적게 걸리는 사람 먼저 처리해주면 된다. 1. 입력받은 인출소요시간 배열(arr)을 오름차순으로 정렬해준다. 2. 본인의 대기시간 변수(waitTime) 과 전체대기시간 변수(totalTime)을 사용하여 대기 시간을 더해준다. waitTime += 본인의 인출소요시간(arr[i]) [→ 본인이 대기한 시간 ] totalTime += waitTime import java.io.BufferedReader; im..
https://www.acmicpc.net/problem/4796 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 문제) V일의 휴가를 시작했다. 캠핑장은 연속하는 P일 중 L일만 사용가능할 때, 최대 며칠동안 사용가능? 접근 방식) 1. V일의 휴가 기간을 P일로 나눈 몫에 L을 곱한다. 2. 남은기간(V % P) 와 L 중 작은 값을 더해준다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea..

해결 방법 2가지 1) 다른 포트 사용 2) MySQL 서비스 중지하고, 3306 포트 사용하기 MariaDB와 MySQL은 기본으로 3306 포트를 사용한다. 기존에 MySQL이 먼저 설치되어 있어서 MariaDB 설치 중에 충돌이 발생했다. 1) 다른 포트 사용 TCP port 번호를 바꿔주면 된다. 2) MySQL 서비스 중지하고, 3306 포트 사용하기 현재 MySQL이 3306 포트를 사용중이므로 서비스를 중지한다. win + R 로 실행에서 services.msc 실행 (or 작업표시줄 검색창에 '서비스' 검색하여 실행) 서비스에서 MySQL80을 찾아서 서비스를 중지한다. 중지하고, 다시 3306 포트로 설치 진행하면 정상적으로 설치된다. ➕ 이후에 MySQL 서버로 pw입력 후 접속하려고 ..
https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 접근 방식) 이분탐색 1. N개의 정수를 배열에 저장 2. M개 만큼 반복문 돌면서, 해당 정수가 배열에 있는지 확인 (이분탐색) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; impor..
https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어 www.acmicpc.net 접근 방식) 1. 방향 없는 그래프니까 양쪽으로 연결 2. for문으로 모든 정점 반복하면서 방문하지 않았다면, DFS/BFS 실행 빠져나오면서 count++ 3. count 출력 1) BFS import java.util.*; import java.io.*; public class B_11724 { static ArrayList[]..
https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제) 지도에서 시작(S) → 레버(L) → 출구(E) 순서로 가야한다. 접근 방식) BFS 1. O, X, S, L, E 문자 들어있는 char map[][] 배열 만듦 만들면서 Start와 Lever 위치 파악해서 좌표 저장해둠 (startX, startY, leverX, leverY) 2. 시작지점(S) → 레버(L) 까지 갈 수 있는지 bfs 실행 return 값이 -1이면 갈 수 없다는..