문제 풀이 66

[백준] 27522 (카트라이더: 드리프트)

#1 알고리즘 삽입 정렬 (Insertion Sort)#1 알고리즘 #2 코드 (자바) public static void insertionSort(int[] array, int startIndex, int endIndex) { for(int maxIndex = (startIndex + 1); maxIndexkenel.tistory.com정렬 알고리즘은 여러 가지가 있다. 상황에 맞추어 가장 적절한 알고리즘을 골라야 하지만, 나는 알고리즘을 공부 중이므로 사용해 보지 않은 정렬 알고리즘 중에 아무거나 골라서 사용한다. 이 문제에 사용할 알고리즘은 삽입 정렬(Insert Sort)이다. 문제에 조건에 맞춰 삽입 정렬 알고리즘을 약간 수정했다. 삽입 정렬의 핵심 원리는 그대로지만, 시간 저장용 배열 그리고 팀..

[백준] 2839 (설탕 배달)

#1 알고리즘0 ~ (N / 3)을 순회한다는 점에서 a는 음수일 수 없다. 하지만, b는 명시적으로 순회하는 게 아니라, a의 범위를 순회할 때 간접적으로 도출된다. 이 때, b가 혹여나 음수 값으로 계산되지 않을까 하는 우려가 있을 수 있다. 우려를 해소해보자면, a의 최댓값은 N / 3이다. 따라서 항상 (N - 3 * a) / 5 >= 0 이 성립한다. b = (N - 3 * a) / 5 이므로, b값은 음수일 수 없다. #2 코드#2-1 자바import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        int ..

[백준] 9076 (점수 집계)

#1 알고리즘 선택 정렬 (Selection Sort)#1 알고리즘 #2 요약 (자바) public static void selectionSort(int[] array, int startIndex, int endIndex) { for(int maxIndex = endIndex; startIndex kenel.tistory.com선택 정렬은 알고리즘이 매우 간단하기 때문에, 가벼운 정렬 문제에 사용하기에 안성맞춤이다. #2 코드#2-1 자바import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int..

[백준] 4153 (직각삼각형)

#1 알고리즘 선택 정렬 (Selection Sort)#1 알고리즘 #2 요약 (자바) public static void selectionSort(int[] array, int startIndex, int endIndex) { for(int maxIndex = endIndex; startIndex kenel.tistory.com코드 중에 선택 정렬의 원리를 살짝 응용한 부분이 있다. 선택 정렬은 알고리즘이 매우 간단하기 때문에, 가벼운 정렬 문제에 사용하기에 안성맞춤이다. #2 코드#2-1 자바import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanne..

[백준] 11651 (좌표 정렬하기 2)

#1 알고리즘#1-1 11650 - 좌표 정렬하기#1 알고리즘 힙 정렬 (Heap Sort) #1 알고리즘 힙(heap)이라는 영어 단어의 사전적 의미는 쌓아 놓은 무더기다. 그리고 이 단어는 프로그래밍에서도 사용된다. 첫째로 메모리 영역에서, 둘째로 자료구kenel.tistory.com해당 문제의 코드를 그대로 사용하되,문제의 조건에 맞추어 isSecondParameterGreaterThanFirst()의 내부 로직을 변경했다. #1-2 병합 정렬 (Merge Sort)#1 알고리즘 병합 정렬의 총 비교 횟수는, 최악의 경우 nlog2n이다 #2 코드 (자바) public static void mergeSort(int[] array, int startIndex, int endIndex) { // (st..

[백준] 8958 (OX퀴즈)

#1 알고리즘O 또는 X 어느 쪽에서든 점수 갱신을 한다고 생각한다. 점수 갱신 전에, O는 더할 점수를 1만큼 증가시키고, X는 더할 점수를 0으로 만든다. #2 코드#2-1 자바import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int testCaseCount = Integer.parseInt(sc.nextLine().trim()); String submit = ""; for(int i = 0; i  #2-2 코틀린fun main() { val t..

[백준] 10250 (ACM 호텔)

#1 알고리즘#1-1호텔에 몇 번째 손님이 어느 층 어느 방에 입실하는지의 규칙을 살펴본다. #1-2규칙을 공식으로 표현하면, 손님이 H의 배수인 경우와 아닌 경우로 나누어진다. 이 알고리즘을 그대로 코드로 만들어도 이 문제를 풀수 있다. #1-3이와같이 if문을 없애 코드의 길이를 줄이는 방법도 있다. 바로, 1-based indexing으로 순서가 기술되어 있는 손님을 0-based indexing으로 생각하는 것이다. #2 코드#2-1 자바import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); ..