Competition 117

[백준] 2751번 자바 퀵소트

문제 출처 접근 방식 및 풀이 - 여기서 중요한건 scanner -> bufferedreader 사용이다. 이런 정렬문제에서는 처리속도가 너무 중요한데 시간을 줄이기 위해선 bufferedreader를 사용한다.( 두 타입의 시간차는 6배 정도 bufferedreader가 더 빠르다고 한다.) - list로 바로 정렬하는 방법도 있지만, quicksort를 활용하였다. - quicksort를 제일 잘 설명해놓은 블로그인것 같다. 차근차근 읽으며 손코딩으로 겨우 이해했다. https://mygumi.tistory.com/308 퀵소트 알고리즘 :: 마이구미 이 글은 정렬 중 퀵소트(Quick Sort), 퀵정렬이라고 불리는 정렬을 다뤄본다. 누구나 한번쯤 들어봤고, 구현해본 정렬 중 하나이다. 빠른 정렬에..

[백준] 10989번 자바 수 정렬

문제 출처 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 접근 방식 및 풀이 - 처음엔 무식하게 LIST로 접근했다가 시간초과. - 다른 블로그들을 참고하여 배열에다가 숫자가 몇번나오는지 카운트. - 나중에 출력은 인데스 마다 몇번 카운트 했는지만 출력해주면 됨. 소스 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java...

[백준] 11650 자바 좌표정렬 2차원배열

문제 출처 https://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차원 배열에 넣어서, Arrays.sort 사용하였다. 범위가 크면 사용할 수 없지만 이 문제 범위안에서는 사용가능하다. 소스 코드 import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(Stri..

[백준] 10872번 자바 팩토리얼

문제 출처 https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 접근 방식 및 풀이 - for문을 통해 1부터 N까지 곱해준 결과값을 출력한다. 소스 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); long result =1; for (int i = 1; i

[백준] 10824번 자바

문제 출처 https://www.acmicpc.net/problem/10824 10824번: 네 수 첫째 줄에 네 자연수 A, B, C, D가 주어진다. (1 ≤ A, B, C, D ≤ 1,000,000) www.acmicpc.net 접근 방식 및 풀이 - a 와 b 숫자를 만들때, b의 길이만큼 10의 배수를 곱해주면 a와 b가 합쳐진 숫자가 나온다. - 로직은 맞는데 자꾸 틀렸다고 나와서 long 타입으로 변경하니 정답! 소스 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long a = sc.nextInt(); long ..

[백준] 10866번 자바 덱 기초

문제 출처 https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다. www.acmicpc.net 접근 방식 및 풀이 - 자바 deque에 대한 기초 문제이다. - 명령어에 맞춰서 deque 메소드를 호출하고 출력한다. 소스 코드 import java.util.ArrayDeque; import java.util.Deque; import java.util.Scanner; public class Main { public static v..

[백준] 10845번 자바 큐 기초

문제 출처 https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다. www.acmicpc.net 접근 방식 및 풀이 - 큐를 사용하는 기초 문제이다. - 큐를 선언하고 명령어에 따라 코딩하면 된다. - Queue로 진행하다가 peekLast, peekFirst 메소드 사용을 위해 Deque로 바꿨다. 소스 코드 import java.util.Deque; import java.util.LinkedList; import java.ut..

[백준] 10828번 자바 스택 기초

문제 출처 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다. www.acmicpc.net 접근 방식 및 풀이 - 스택을 활용하는 기초 문제이다. - 스택 선언 후 명령어에 맞게 코딩해주면 된다. 소스 코드 import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args) { Scanner sc ..

[백준] 10820번 자바 아스키코드활용

문제 출처 https://www.acmicpc.net/problem/10820 10820번: 문자열 분석 문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다. www.acmicpc.net 접근 방식 및 풀이 - string을 char형으로 가져와서 아스키코드에 맞게 범위를 지정해주었다. - 공백은 아래 블로그를 참고하며 표를 보면 126인데.. 126으로 하면 처리가 안되는 것 같아서 우선 else 조건으로 빼주었다. https://coding-factory.tistory.com/74 [Java] 아스키코드, 유니코드를 문자나 숫자로 변환하기 아스키 코드 미국에서..

[백준] 10814번 자바 array2차원배열

문제 출처 https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. www.acmicpc.net 접근 방식 및 풀이 - Map으로 해야하나 고민했지만, 같은 index가 들어오는 경우도 있기 때문에 2차원 배열로 해야한다. - 2차원 배열의 sort도 기억하기... 소스 코드 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System..