본문 바로가기

백준10

백준 1697 java https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 풀이 방법 풀이 코드 import java.io.*; import java.util.*; public class Main{ static int N; static int K; static int move[] = new int[100001]; public static void main(String [] args) throws IOException { BufferedReade.. 2024. 2. 5.
백준 13458 시험감독 c언어 https://www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net 사고과정) 1. 총감독이 감시할수 있는 인원수 B를 각 시험장 인원에 빼준다 이떄 나온 값이 0보다 작거나 0일때는 굳이 부감독 넣을 필요 없다. 따라서 이런경우 count즉 감독인수만 한번 올려준다. 2. 위의 경우가 아닐경우 인원수에 B를 빼주고 이 뺴준값들에 부감독이 감시할수 있는 인원 C를 나누어 줄건데 몫이 0일 경우 부감독 1명으.. 2023. 3. 9.
백준 11659 구간합구하기4 c언어 https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 나의 첫번쨰 접근코드) #include int main() { int N,M,i,j,result; int first[100000] = {0}; int last[100000] = {0}; int arr[100000] = {0}; scanf("%d %d", &N, &M); i = 0; while (i < N) { scanf("%d", &arr[i]); i++; } i = 0; .. 2023. 3. 2.
백준 13305 주유소 c언어 https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 사고과정) 1. 이중 while문을 사용하여 문제를 해결할려고 접근 2. 굳이 이중 while문을 사용하지 않고 하나만 써도 가능할것이라 생각이들었음 3. 주유소1*(도로1) + 주유소1*(도로2) == 주유소1 * (총 도로) 라는 논리를 이용해서 문제해결 4. 주유소 1과 주유소 2를 비교하여 더작은 주유소를 기준으로 도로를 곱해준다. 개선점 || 비판점) 1. 굳이 N에 lon.. 2023. 2. 15.
백준 11399 ATM c언어 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 사고) 1. 각 사람들의 기다리는 시간의 합을 구하는 문제인데 딱 보자마자 오름차순 정렬로 다 합쳐서 답을 구하면 될것이라 생각했다. 2. 오름차순 정렬에는 여러가지 방법들이 있지만 내가 알고 있는 정렬중에서 qsort정렬을 사용하기로 생각했다. 3. qsort함수가 빠르게 정렬할수 있다고 생각했다. 4. 정렬한후 각 사람당 기다리는 시간을 더해주는데 이때 while문을 한번더 사용하여 앞에 기다리는 시간도 합쳐질수 있도록했다.. 2023. 2. 14.
백준 1427 소트인사이드 c언어 https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 1. 버블정렬이 생각났지만 비효율적인 정렬 방식이며 qsort정렬도 배웠기 때문에 이걸 이용하기로 결정 2. 기존 내가 알던 qsort정렬은 오름차순만 알고 있었는데 compare함수에 부호만 반대로 하면 내림차순이라 쉽게 만듬 3. 처음 배열을 result[] = {0}; 이렇게 선언하니까 세그먼트 오류가 떴다. 4. 그래서 어차피 숫자가 11자리가 최대이기 떄문에 result[11] = {0}; 로 바꿔 선언해주니 맞게 되었다. 나의코드) #include #include int .. 2023. 2. 3.
백준 2556번 최대값 c언어 https://www.acmicpc.net/problem/2566 2566번: 최댓값 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다. www.acmicpc.net 전략) 1. 버블정렬이나 다른 정렬을 통해 제일 큰 숫자를 정렬 시키는 방법을 이용할려고 했는데 숫자의 위치를 출력해야되서 쓰지 않았다. 2. 어차피 최대값이 정해져있는 문제이기 때문에 최대값을 이중배열에 하나하나 비교해서 찾아가는 방법을 쓰기로 결정 다른생각) - 만약에 최대값이 정해져 있지 않다면 result[0][0]을 기준으로 계속 비교해가면서 어디 변수에다가 최대값을 비교할때마다 저장해서 최대값을 찾아갔을것.. 2023. 1. 23.
백준 2738번 행렬 덧셈 c언어 https://www.acmicpc.net/problem/2738 2738번: 행렬 덧셈 첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같 www.acmicpc.net 1. 이중배열을 두개 만들어서 더하고 싶지 않아서 하나로 만들어서 더하는 방식을 사용했다. 2. 더할때 j + M 을 했는데 결과가 더해지지 않아 생각해보니 i만 + N해줘야된다는 걸 알게되었다. 3. j + M 을 더했을 떄는 j의 값이 이중배열의 가로 범위를 넘는다. 따라서 답이 제대로 나오지 않았다 나의코드) #include intmain() { intN, M; inti, j;.. 2023. 1. 22.
백준 11047번 동전0 c언어 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 1. 처음에 scanf받을떄 부터 K보다 받는 숫자가 크다면 break 걸라고 했는데 예제에 있는 숫자들을 모두 받아야해서 다받았다. 2. 나눗셈을 이용해서 해결할까 생각했다. 빼는게 더 쉬울것이라 생각 3. 뺄때 몇번 뺴는지 숫자를 출력을 하는것이기 때문에 뺄때 마다 count를 1씩 증가해주는 형태로 해결했다. 4. 문제가 K를 .. 2023. 1. 19.
백준 15650 - N과M(2) c언어 https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 이전에 풀었던 N과M(1)과 매우 유사하다 단지 오름차순으로 출력이 되어야한다는것이 다르다. 2. 오름차순이니까 prev라는 변수를 따로 선언해서 prev = result[count - 1] 이라는 조건으로 오름차순을 만들어준다. 3. i = prev 조건으로 인해 while문이 돌아가면서 오름차순이 만들어진다. 4. 나머지는 전에 했던 N과M(1)의 내용과 동일하다. 나의답안) #incl.. 2023. 1. 14.
728x90