B11728
개요
백준 문제 11728번을 풀면서 어려웠던 점과 코드를 정리한다.
소요 시간 : 20분
https://www.acmicpc.net/problem/11728
문제
정렬되어있는 두 배열 A와 B가 주어진다.
두 배열을 합친 다음 정렬해서 출력하는 프로그램을 작성하시오.
코드
1 | #include <iostream> |
백준 문제 11728번을 풀면서 어려웠던 점과 코드를 정리한다.
소요 시간 : 20분
https://www.acmicpc.net/problem/11728
정렬되어있는 두 배열 A와 B가 주어진다.
두 배열을 합친 다음 정렬해서 출력하는 프로그램을 작성하시오.
1 | #include <iostream> |
백준 문제 10816번을 풀면서 어려웠던 점과 코드를 정리한다.
소요 시간 : 60분
https://www.acmicpc.net/problem/10816
숫자 카드는 정수 하나가 적혀져 있는 카드이다.
상근이는 숫자 카드 N개를 가지고 있다.
정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오.
1 | #include <algorithm> |
문제를 잘못이해했음
문제 읽는데 더 시간을 들이자.
백준 문제 10815번을 풀면서 어려웠던 점과 코드를 정리한다.
소요 시간 : 30분
https://www.acmicpc.net/problem/10815
숫자 카드는 정수 하나가 적혀져 있는 카드이다.
상근이는 숫자 카드 N개를 가지고 있다.
정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오.
1 | #include <iostream> |
탐색 -> 빠른 탐색 알고리즘인 이진 탐색 사용
이진 탐색 사용할려면 정렬해야함 -> 이번에는 sort() 사용
1 | ios_base::sync_with_stdio(0); |
위 코드 안써서 시간초과남
부담갖지말고 매일매일 하루를 채운다는 느낌
백준 문제 B2110번을 풀면서 어려웠던 점과 코드를 정리한다.
소요 시간 : 60분
https://www.acmicpc.net/problem/2110
도현이의 집 N개가 수직선 위에 있다. 각각의 집의 좌표는 x1, …, xN이고, 집 여러개가 같은 좌표를 가지는 일은 없다.
도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 한다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 한다.
C개의 공유기를 N개의 집에 적당히 설치해서, 가장 인접한 두 공유기 사이의 거리를 최대로 하는 프로그램을 작성하시오.
1 | #include <iostream> |
* 웹에서 참고 많이한 문제
문제 풀이는 우선 동적계획법과 비슷한 느낌으로
정해진 간격을 두고 일단 설치한 뒤에 조건을 돌아보는 식으로 풀 수 있다.
자세히는 설치하는 공유기들은 이전에 설치된 공유기와 간격값이 크거나 같아야 한다.(주어진 간격보다 적으면 안되니까)
이 조건으로 우선 설치를 한 뒤에
설치할 수 있는 수와 비교하여 간격을 줄이거나 늘리는 방법으로
답을 찾을 수 있다.
이 문제를 보고 생겼던 의문점 하나
이분 탐색인데 정렬이 안되어서 입력이 들어온다 -> 정렬해야하지 않나? => YES
logN에 풀어야하는데 기존 정렬함수는 효율적으로 잘 짜여져있어 사용해도 됨.
문제를 읽고 생각을 해봤는데 자신의 생각에 확신이 안들어 금방 포기해버렸다.
간격을 항상 같아야 한다고 생각했는데 사실 간격보다 크기만 하면 되는 것이었다.
일단 설치한 뒤에 조건을 돌아보는 방식을 생각하지 못하여서 어떻게 구현할지 조차 감이 안잡혔다.