본문 바로가기

코딩 테스트63

[프로그래머스] level 3 - 이중우선순위큐 https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 | 프로그래머스 programmers.co.kr /* 문제의 해설에 앞서 내가 프로그래머스 문제를 푸는 나만의 기준에 대해 알리고자 한다. 백준은 온라인 강의 중급 2/3까지, 프로그래머스는 level 3까지의 문제를 해결하려고 노력하고 있다. 개인적인 생각으로는 프로그래머스 level 2까지는 백준 온라인 강의 초급보다 쉬운 거 같다. 그렇기 때문에 다음과 같은 순서로 코딩 문제를 풀고 있다. 프로그래머스 level 1, 2 문제 다 풀기기 백준 초급문제 풀기 백준 중급문제 풀기 풀다가 막히면 프로그래머스 level 3 문제 풀기 다시 백준 중급문제 풀기 (brute .. 2020. 2. 8.
[백준 6087] 레이저 통신, C++ https://www.acmicpc.net/problem/6087 6087번: 레이저 통신 문제 크기가 1×1인 정사각형으로 나누어진 W×H 크기의 지도가 있다. 지도의 각 칸은 빈 칸이거나 벽이며, 두 칸은 'C'로 표시되어 있는 칸이다. 'C'로 표시되어 있는 두 칸을 레이저로 통신하기 위해서 설치해야 하는 거울 개수의 최솟값을 구하는 프로그램을 작성하시오. 레이저로 통신한다는 것은 두 칸을 레이저로 연결할 수 있음을 의미한다. 레이저는 C에서만 발사할 수 있고, 빈 칸에 거울('/', '\')을 설치해서 방향을 90도 회전시킬 수 있다. www.acmicpc.net 본 문제는 Olympiad 2008-2009 Season January 2009 Contest Silver 3번 문제다. 지도에 빈칸과.. 2020. 2. 7.
[백준 1790] 수 이어 쓰기 2, C++ https://www.acmicpc.net/problem/1790 1790번: 수 이어 쓰기 2 첫째 줄에 N(1 ≤ N ≤ 100,000,000)과, k(1 ≤ k ≤ 1,000,000,000)가 주어진다. N과 k 사이에는 공백이 하나 이상 있다. www.acmicpc.net 본 문제는 1 ~ n 까지의 수를 이어서 썼을 때 길이를 구하고 k의 위치의 값을 출력하는 문제다. n의 최대값이 매우 크기 때문에 실제로 값을 구해서 찾는 것은 불가능 하다. 따라서, k와 인접한 위치를 찾아서 출력하는 방식을 이용해야 한다. 이때, 이분 탐색을 이용하면 빠르게 답을 구할 수 있다. 예를 들어 n = 20 일 때, 우선 n까지의 길이가 k보다 짧을 경우를 예외처리 한다. 1 ~ 9 까지의 길이를 구하고 10 ~.. 2020. 2. 5.
[백준 11728] 배열 합치기, C++ https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거나 같은 정수이다. www.acmicpc.net 본 문제는 merge sort 문제다. 분할 정복으로 정렬을 해야 하는 문제인데 실제 문제에서는 분할 부분은 생략되어있다. /* 개인적으로 merge sort는 군 복학하고 첫 학기때, for를 이용하여 1 ~ 100까지 더하는 코딩도 못할 시기에 했던 첫 과제였다. 그 당시 또 C언어 기초를 배울 시기라 linked list로 구현했던 것으로.. 2020. 2. 5.
[백준 10816] 숫자 카드 2, C++ https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이가 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이수도 -10,00 www.acmicpc.net 본 문제는 n개의 숫자 카드를 보유하고 있을 때, 해당 숫자가 적혀있는 숫자 카드의 개수를 m번 출력하는 문제다. 이분 탐색을 .. 2020. 2. 5.
[백준 17089] 세 친구, C++ https://www.acmicpc.net/problem/17089 17089번: 세 친구 첫째 줄에 사람의 수 N(3 ≤ N ≤ 4,000), 친구 관계의 수 M(0 ≤ M ≤ 4,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계를 의미하는 두 정수 A, B가 주어진다. 친구 관계는 A와 B, 그리고 B와 A가 친구라는 것을 의미한다. 사람은 1번부터 N번까지 번호가 매겨져 있다. 같은 친구 관계가 두 번 이상 주어지는 경우는 없다. www.acmicpc.net 본 문제는 n명의 사람 중 a, b, c 세 명을 선택한다. a, b, c 세 명 다 친구 일 경우 각각 친구의 수의 합을 구한다. 단, a의 친구 수를 계산할 때, b와 c는 빼고 계산해야 하고, b의 친구 수를 계산할 때는 a와 c.. 2020. 2. 4.