본문 바로가기
반응형

혼자 공부하는 것들/알고리즘27

백준 java) 10818번 문제 최소, 최대 일단 같이 문제를 보겠습니다. www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 문제는 아주 심플하죠. N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. 뭔가 정렬 알고리즘을 쓰면 될 거 같죠? 저는 자바로 구현했습니다. import java.util.*; public class Main { public static void main(String[] arg) { Scanner input = ne.. 2020. 9. 23.
백준 C) 10971번 문제 X보다 작은 수 일단 문제를 같이 볼까요? www.acmicpc.net/problem/10871 10871번: X보다 작은 수 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. www.acmicpc.net 문제를 보면 정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오. 라고 적혀있습니다. 비교 반복문으로 배열에 저장해주면 될 것 같네요. 저는 c언어로 구현했습니다. #include #include int main() { int i,j=0,max,X; scanf("%d %d",&max,&X); int .. 2020. 9. 23.
백준 java) 10989번 문제 수 정렬하기 3 문제를 같이볼까요? www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제는 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.가 되겠습니다. 이 문제에서는 런타임오류를 어떻게 해결해야하는지 관건이겠네요. 저는 자바로 구현했습니다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWr.. 2020. 9. 22.
백준 java) 11399번 문제 ATM 문제를 한번 같이 볼까요? www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제를 읽어보면 줄을 [2, 5, 1, 4, 3] 순서로 줄을 서면, 2번 사람은 1분 만에, 5번 사람은 1+2 = 3분, 1번 사람은 1+2+3 = 6분, 4번 사람은 1+2+3+3 = 9분, 3번 사람은 1+2+3+3+4 = 13분이 걸리게 된다. 각 사람이 돈을 인출하는데 필요한 시간의 합은 1+3+6+9+13 = 32분이다. 이 방법보다 더 필요한 시간의 합을 최소로 만들 수는 없다. 이런 식으로 구현해야.. 2020. 9. 21.
백준 java) 11650번 문제 좌표 정렬하기 문제를 한번 볼까요? www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 여기서 보면 2차원 평면 위에 점 N개가 주어지고, X좌표를 증가하는 순, 같으면 Y좌표가 증가하는 순서로 정렬하는 것입니다. 저는 자바로 구현했습니다. import java.util.*; public class Main { public static void main(String[] arg) { Scanner input = new Sca.. 2020. 9. 21.
백준 C) 15552번 문제 빠른A+B 일단 문제를 볼까요? www.acmicpc.net/problem/15552 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmicpc.net 본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다. C++을 사용하고 있고 cin/cout을 사용하고자 한다면, cin.tie(NULL)과 sync_with_stdio(false)를 둘 다 적용해 주고, endl 대신 개행문자(\n)를 쓰자. 단, 이렇게 하면 더 이상 scanf/printf/puts/getch.. 2020. 9. 20.
백준 JAVA) 14502번 문제 연구소 일단 문제를 볼까요? www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크� www.acmicpc.net 저는 자바로 구현해보았습니다. import java.util.Scanner; public class Main { static int[] dy = {-1,1,0,0}; static int[] dx = {0,0,-1,1}; static int N,M, an; static int[][] temp, map; static void wall(int v, int cnt) { if(cnt ==3) { temp = .. 2020. 9. 20.
백준 JAVA) 2309번 문제 일곱 난쟁이 일단문제를볼까요? www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 저는 자바로 풀었습니다. import java.util.*; public class Main{ public static void main(String[] arg) { Scanner input = new Scanner(System.in); int N = 9; int[] arr = new int[N]; int sum=0; boolean check =false; for(int i=0;i 2020. 9. 20.
JAVA)백준 1016번 제곱 ㄴㄴ수 이 문제는 시간복잡도를 얼마나 효율적으로 풀수있는가를 보는 것이 관건이다. 직관적으로 풀면 import java.util.Scanner; public class Main { public static void main(String[] arg) { long min, max; long k; int count=0; Scanner input = new Scanner(System.in); min = input.nextInt(); max = input.nextInt(); for(long i=min;i 2020. 7. 18.
반응형