전체 글(45)
-
백준 13915번: 현수의 열기구 교실 (C++)
https://www.acmicpc.net/problem/13915 13915번: 현수의 열기구 교실 현수는 열기구 여름특강의 강사다. 현수는 매우 성실해서 모든 수강생들의 열기구 비행을 기록하고있다. 매 비행 이후, 현수는 그 비행에 참석한 수강생들의 기록을 리스트에 추가한다. 리스트 www.acmicpc.net 풀이 중복과 정렬처리를 잘 해줘야하는 문제. 나는 중복이 안되고 자동정렬되는 set 컨테이너로 해결했다. 우선, 수강생 번호( s1 )를 문자열로 받아서 set01 에 한 글자씩 넣어주어서 중복제거와 정렬을 시켜주었다. 그 후에 s2 문자열에 set01 의 요소들을 다시 넣어주고 중복제거를 위해 set02 에 넣어주었다. 그리고 set02 사이즈를 출력하면 분류된 숙련도가 출력된다. s1 se..
2023.01.26 -
백준 5874번: 소를 찾아라 (C++)
https://www.acmicpc.net/problem/5874 5874번: 소를 찾아라 천방지축 베시(소, 1세)는 외양간을 탈출해서 풀로 뒤덮인 산등성이에 숨었다. 농부인 존씨는 베시를 다시 잡기위해 온 풀숲을 샅샅히 뒤졌지만 찾지 못하였다. 안타깝게도 그는 베시를 찾는 www.acmicpc.net 풀이 앞다리( " (( " )가 앞에 있고 뒷다리( " )) " )가 뒤에 있는 조합을 찾는 문제. 우선, 각 경우를 배열에 담아주었고 반복문을 돌면서 앞다리보다 뒷다리가 뒤에 있으면 순서쌍의 갯수를 추가시켜주었다. 전체 코드 #include #include #include using namespace std; string N; vector front; vector back; int sum = 0; in..
2023.01.26 -
백준 15810번: 풍선 공장 (C++)
https://www.acmicpc.net/problem/15810 15810번: 풍선 공장 1, 2, 3번 스태프가 각각 5분, 7분, 3분씩 걸린다면 3분이 지났을 때 3번 스태프가 1개, 5분에 1번 스태프가 1개, 6분에 3번 스태프가 1개를, 7분에 2번 스태프가 1개를, 9분에 3번 스태프가 1개를, 10분에 www.acmicpc.net 풀이 간단하지만 타입에 조금 신경써야 하는 이분 탐색 문제. 걸리는 시간을 줄여가며 몇 개의 풍선이 만들어졌는 지 체크한다. 우선 반복문을 돌며 걸리는 시간 (mid) / 스태프의 풍선 제작 시간 (v[i]), 즉 스태프가 만든 풍선의 갯수를 cnt에 더해주었다. 그리고 cnt 가 만들어야하는 풍선의 갯수 (M)보다 많다면 true를 반환시켜서 걸리는 시간을 ..
2023.01.23 -
백준 6236번: 용돈 관리 (C++)
https://www.acmicpc.net/problem/6236 6236번: 용돈 관리 현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 쓰기로 www.acmicpc.net 풀이 이해가 조금 어려웠던 문제. 돈이 남아도 다시 인출할 수 있기 때문에 큰 금액은 M 번에 맞춰 뽑을 수 있다. 그래서 돈이 모자랄 때 뽑는 경우를 M 과 비교하며 이분 탐색을 진행했다. is_possible 함수에 구현했는데 코드를 보면 이렇다. bool is_possible(int mid) { int cnt = 1; int tmp = mid; for (int i = 0; i < v.size();..
2023.01.23 -
백준 11663번: 선분 위의 점 (C++)
https://www.acmicpc.net/problem/11663 11663번: 선분 위의 점 첫째 줄에 점의 개수 N과 선분의 개수 M이 주어진다. (1 ≤ N, M ≤ 100,000) 둘째 줄에는 점의 좌표가 주어진다. 두 점이 같은 좌표를 가지는 경우는 없다. 셋째 줄부터 M개의 줄에는 선분의 시작점과 www.acmicpc.net 풀이 문제가 짧아서 쉽게 접근했다가 틀렸습니다 폭탄 맞았던 이분 탐색 문제. 선분의 시작점과 끝점 각각 이분 탐색을 돌려주어야해서 함수로 만들어주었다. 그리고 점의 좌표를 입력받고 추가로 가장 끝 값을 더 넣어줘서 백터의 오버플로우를 방지했다. 예제의 1 3 10 20 30 값을 넣는다 했을 때, (오버플로우 방지용 1987654321) 2와 60이 들어온다면, 0 ~ ..
2023.01.23 -
백준 1590번: 캠프가는 영식 (C++)
https://www.acmicpc.net/problem/1590 1590번: 캠프가는 영식 예제 1의 경우 150분, 200분, 250분, ..., 600분에 한 대씩 버스가 출발한다. 따라서 영식이는 300분에 버스를 타면 된다. www.acmicpc.net 풀이 처음에 모든 버스의 도착시간 배열을 만들까 하다가 입력 + 정렬 등등 코드가 너무 복잡해질 것 같아서 각 버스 별로 기다리는 최소 시간을 이분 탐색으로 찾아주었다. left = 첫번째 버스, right 는 마지막 버스로 입력 받고 is_possible 함수에서 시간 계산을 해주고 영식이가 도착한 시간 이후로 버스가 도착해야 탈 수 있기 때문에 T보다 큰 mid(버스)를 반환해주었다. 그리고 ret 에는 (mid 버스의 시간 - T) 의 계산..
2023.01.23