목록분류 전체보기 (45)
정리
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/d3BEqH/btqHU7v4TeV/LkrLG8aVHkkSOxv0hqkwO1/img.png)
백준 2217번: 로프 - 입력받은 로프 값을 visit[로프 값] += 1 을 통해 저장합니다. - for문을 통해 계산을 합니다. - N = 2, 10과 15를 입력받을 때를 예로 들겠습니다. visit[10] = 1, visit[15] = 1입니다. for문을 통해 10000부터 1까지 돌겠습니다. i = 15 일 때, s = 1이고 이 때 들 수 있는 최대 무게는 i * s 입니다. max(answer, i *s) 로 들 수 있는 최대 무게를 구합니다. i = 10일 때, s = 2이고 이 때 들 수 있는 최대 무게 역시 i * s 입니다. max(answer, i * s) 를 통해 들 수 있는 최대 무게를 구해서 answer에 저장하면 됩니다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/eh2rx0/btqHK4tzpzA/FADRykkGE3AWIZA4AJbI70/img.png)
백준 3079번: 입국심사 - 이분탐색 알고리즘을 활용해야하는 문제입니다. - 이분탐색의 경계값은 left = 최단 시간 심사대, right = 최장 시간 심사대 * 인원수 입니다. - total 은 mid시간 동안 검사할 수 있는 총 사람의 수 입니다. total 은 mid시간 // 각 심사대의 소요 시간 의 총합을 구하면 됩니다. mid시간동안 M보다 더 많은 인원을 심사하는 것은 답이 될 수 있지만 M보다 적은 인원을 심사하는 것은 안되므로 total >= M 인 경우와 아닌 경우로 나누어 생각했습니다. - 파이썬 같은 경우에는 sys를 꼭 import하여 풀어야합니다. sys.stdin.readline()를 활용하여 입력값을 받아야지 시간초과에 안 걸립니다. N이 작을 때에는 문제가 없지만 100..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/pmC93/btqHMvKFlCf/a1sj4uId9UDjxuTvJJI2Tk/img.png)
Python 설치 방법(Windows) / 파이참, Pycharm 설치 방법 1. 파이썬을 다운 받습니다. - https://www.python.org/downloads/ 에 접속하여 노란색 버튼(Download Phthon)을 눌러 파이썬 가장 최근 버전을 다운 받습니다. Add Python 3.8 to PATH를 체크하고 Install Now를 진행합니다. 설치 과정이 완료되면 위와 같은 화면이 나오게 됩니다. Disable path length limit을 클릭합니다. 이상으로 파이썬 설치과정은 완료되었습니다. 파이썬 프로그램에는 이클립스, VS code, 파이참이 대표적입니다. 사용자가 편한 프로그램을 다운 받아서 사용하면 됩니다. 개인적으로 파이참이 가장 좋다고 생각하기에 파이참을 다운 받도록 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nOqE7/btqHwgV5DW1/keXnFQMSdRA3AtRlk7ezuK/img.png)
백준 2839번: 설탕배달 - N보다 작은 가장 큰 5의 배수를 구합니다. 봉지의 최소 개수를 구해야 하므로 5킬로그램을 우선적으로 고려하기 위함입니다. - (N - 5킬로그램으로 담은 무게) 가 3의 배수라면 3킬로그램 봉지에 담아 총 봉지의 개수를 구하면 됩니다. - (N - 5킬로그램으로 담은 무게) 가 3의 배수가 아니라면 5킬로그램 봉지의 수를 하나 줄입니다. (N - 5킬로그램으로 담은 무게) 가 3의 배수가 될 때까지 이 과정을 반복합니다. - 5킬로그램 봉지가 0개 일 때에도 (N - 5킬로그램으로 담은 무게) 가 3의 배수가 아니라면 정확하게 N킬로그램을 만들 수 없는 경우이므로 -1을 출력합니다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/BDu4e/btqG9ROEbuK/P7d9t27SDzxj09WlIZ3APk/img.png)
백준 1931번: 회의실배정 - 최대한 많은 회의를 배정하기 위해서는 빨리 끝나는 회의를 우선배치해야 됩니다. - 왜 빨리 끝나는 회의 순서로 배치해야 되는지 증명을 여기서 하면 좋겠지만 이미 깔끔하게 설명한 유튜브 동영상이 있어서 첨부합니다. (강의실 배정 알고리즘 증명 유튜브 동영상) - Comparator 를 통해 회의가 빨리 끝나는 순서대로 정렬합니다. - 앞의 회의가 끝나는 시간보다 회의를 시작하려는 시간이 크거나 같으면 회의를 하고 ANSWER++ 를 합니다. 이 작업을 a[1]부터 a[N-1]까지 반복합니다. - 최소 한 개의 회의는 항상 할 수 있으므로 ANSWER은 1로 초기화합니다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b1rE78/btqGX5NSdcc/JhnQnSjGFloqcAo75hR5Sk/img.png)
- 지난 7월 13부터 8월 12일까지 총 23일간 종로구청 하계 대학생 행정체험단을 했습니다. 여름방학 동안 할 알바를 찾는데 코로나 19로 생각보다 찾기 쉽지 않더라고요. 그러던 중 종로구에서 대학생 행정체험단을 모집한다는 공고를 보고 지원하게 됐습니다. '공무원이 어떤 일을 하는지 궁금하고 체험하고 싶다'라는 생각보다는 한 달동안 일하면서 돈도 꽤 많이 벌 수 있어서 신청했습니다. 본래 30-40명 정도 선발했는데 이번에는 코로나 19로 대학생들 알바 자리가 부족하다고 해서 100명을 선발했습니다. - 종로구에 사는 대학생(재학, 휴학)들만을 대상으로 합니다. 신청기간은 6월 15일부터 19일 사이에 종로구청(https://www.jongno.go.kr/portalMain.do) 사이트에서 온라인 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/7JuEi/btqF7MnAwtw/QrDuBYoXJ8IB9kePla9Vl1/img.png)
백준 2212번: 센서 - 그리디 알고리즘과 정렬을 이용하는 문제입니다. - 예를 들어 N = 6, K = 2 일 경우, 좌표 3과 6에 센서를 설치하면 2 + 3 = 5로 최솟값이 됩니다. 5 = 0 + 1 + 2 + 2 입니다. 이를 일반화 해보면 다음과 같습니다. 센서의 좌표를 입력 받은 뒤, 오름차순으로 정렬합니다. 각 센서 간의 거리를 구합니다. 센서 간의 거리를 오름차순으로 정렬합니다. 0번 index부터 n-k-1번 index까지의 총합을 구합니다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bvRQJz/btqF3bBd1MF/rxATA2dMsDOCfe6PNwG841/img.png)
백준 1092번: 배 - 정렬과 그리디 알고리즘을 활용하는 문제입니다. 크레인의 무게를 저장한 Arraylist와 박스의 무게를 저장한 Arraylist를 내림차순으로 정렬합니다. craneList.get(0)이 boxList(0)보다 작으면 박스를 모든 박스를 옮길 수 없으므로 -1을 출력합니다. 이중 while문을 통해 밖의 while문은 boxList.size() == 0 이 될 때까지(박스가 더 이상 없을 경우)까지 반복합니다. 안에 있는 while문은 1분에 옮길 수 있는 박스의 수를 계산합니다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bTMZA5/btqFXJ5NfpP/c7fLXDqr2VNrfmeDxQPxz1/img.png)
백준 2512번: 예산 - 이분 탐색 알고리즘을 써야하는 문제입니다. 이분 탐색을 사용하지 않고 상한액을 선형 탐색하면 시간초과에 걸립니다. - 이분 탐색 알고리즘은 예산의 상한액을 찾을 때 사용됩니다. 입력 받은 예산 요청액들을 배열에 저장한 뒤 sort() 를 통해 오름차순으로 정렬합니다. 예산 상한액은 0부터 배열의 마지막 값(가장 큰 값) 사이를 이분 탐색하면서 찾습니다. 예산 상한액보다 작은 요청액은 그 값을 그대로 더하고 예산 상한액보다 큰 요청액들은 예산 상한액을 더합니다. 총합이 총 예산보다 작을 때를 찾아서 상한액을 반환해주면 됩니다.