algorithm 36

프로그래머스 체육복

https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 해결순서 여벌의 체육복이 있는 학생이라고 해서 무조건 도난당한 학생에게 체육복을 빌려줄 수 없음에 유의해야 했다 여벌의 체육복이 있어도 그 학생이 체육복을 도난 당했으면 체육복이 현재 1개밖에 없기 때문에 빌려줄 수 없다. 그래서, 모든학생이 체육복을 하나씩 다 가지고 있다고 가정하고 출발 해봤다. 도난 당하면 -1, 여분이 있는 학생이면 +1 그리고, 여분이 있는데 도난 낭했으면 +1 -1 ..

algorithm/Greedy 2022.09.28

백준 6236 용돈 관리

https://www.acmicpc.net/problem/6236 6236번: 용돈 관리 현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 쓰기로 www.acmicpc.net 📌 해결순서 정말정말정말 오래걸렸다 얼마동안 붙잡고 있었는지에 대한건 기억도 나지 않는다.. 이 문제를 오래붙잡고 있었던 이유가 있는데, 하루에 돈을 두번 뽑을 수 있다고 생각하고 문제에 접근했기 때문이다 예를 들어서 뽑는 금액이 300이고 첫날 사용하는 금액이 500 이면 돈을 두번 뽑아서 600을 만들고, cnt +=2 해주고 시작하면 되지 않을까 했지만 문제에서는 "모자라게 되면 남은 금액은 통장..

백준 3079 입국심사

https://www.acmicpc.net/problem/3079 3079번: 입국심사 첫째 줄에 N과 M이 주어진다. (1 ≤ N ≤ 100,000, 1 ≤ M ≤ 1,000,000,000) 다음 N개 줄에는 각 심사대에서 심사를 하는데 걸리는 시간인 Tk가 주어진다. (1 ≤ Tk ≤ 109) www.acmicpc.net 📌 해결순서 문제를 다 읽고, 이해는 되는데 도저히 어떻게 풀어야 할지 감이 안잡혀서 2일정도 붙잡으면서 풀이를 생각했던 문제다... 이게 이분탐색이라고??? 왜??? 이 생각을 계속 하게 만들었던 문제 근데 이분탐색으로 푸는게 맞다..다른 방법이 있을수도 있겠지만 전혀 생각나지 않는다..ㅋㅋ 이 문제는 랜선자르기 [백준] 파이썬 1654 : 랜선 자르기 https://www.acm..

백준 2805 나무 자르기

https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 📌 해결순서 문제에서 요구하는 값이 절단기 높이의 최댓값이므로 조건을 만족하는 절단기의 높이를 작은값부터 최댓값이 될때까지 키워나가면 된다. 절단기의 높이가 높아질수록 상근이가 가져갈수 있는 나무는 적어진다 start = 0 / end = max(lst) 1. 절단기의 높이가 너무 짧은 경우 -> 이 경우에는 상근이가 가져가려는 나무의 길이보다 더 많은 나무..

백준 1654 랜선 자르기

https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 📌 해결순서 예제에서 총 11개의 랜선이 필요하므로 802 // 200 = 4 743 // 200 = 3 457 // 200 = 2 539 // 200 = 2 자르는 랜선의 길이를 200으로 설정하면 11개의 랜선이 나온다 길이가 201이라면 10개의 랜선이 나오므로 200이 문제에서 물어보는 랜선의 길이 최댓값임을 알수 있다. 1. 이분탐색의 시작과 끝을 정한다 ->..

백준 1920 수 찾기

https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 📌 해결순서 이분탐색을 활용하는 문제중 가장 기본적인 문제라고 할 수 있다. 일단, 이분탐색은 데이터가 정렬 되어 있다고 가정하고 탐색을 시작한다. 다음과 같은 배열에서 2를 찾는 과정을 생각해보자 4 1 5 2 3 배열을 정렬 해준다, 1 2 3 4 5 1. 찾는 데이터가 배열에 있는 경우 target : 2 start : 0 / end : 4 비..

백준 1504 특정한 최단 경로

https://www.acmicpc.net/problem/1504 1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존 www.acmicpc.net 📌 해결순서 다익스트라 기본 문제와 매우 비슷한 문제, 조금 조건만 추가 됐다. 최단경로를 구하는 것은 동일 하지만, 지정한 두 정점을 무조건 거쳐야 하므로 두 정점에서 출발하여 다른 모든 노드로 가는 최단경로 테이블을 각각 만들어 주면 쉽게 해결할 수 있겠다고 생각했다. 테이블을 총 3개 만들어야 하니까, 함수 호출을 3번 해주면 되겠군.. 이렇게 생..

백준 1753 최단경로

https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 📌 해결순서 다익스트라 알고리즘의 제일 기본적인 유형 문제를 풀기전에 다익스트라 알고리즘의 동작과정부터 생각해보자. 위의 그림과 같은 방향 그래프가 있다고 생각해보자 목표는 1번노드에서 출발해 2, 3, 4 노드로 이동하는데 드는 최소 비용을 저장하는 Distance Table 을 구하는 것이다. 탐색을 시작하기 전에 모든 노드는 방문하지 않았으므로, 거리를 ..

백준 14889 스타트와 링크

https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 처음 풀어보는 삼성 sw 역량 기출문제! 중간에 이것저것 테스트 파일 만들어서 확인해본다고 약 1시간 정도 소요 됐던거 같다 문제를 해결하기 위한 키워드는 크게 2가지로 볼수 있다 📌 해결순서 1. 팀 나누기 팀을 어떻게 나눌까 생각하다가 백준에 있는 백트래킹 기초 문제중에 n과 m 시리즈가 있다 1 부터 n 까지의 자연수중에 중복없이 m개의 수를 고르는 문제인데 이걸 사용해서 풀었다 문제에서는 번호를 1 부터 N 까..

백준 1012 유기농 배추

https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 📌 해결순서 이 문제는 bfs 보다는 dfs가 더 깔끔한 풀이가 나오는듯 싶다 dfs는 재귀함수 구조이기 때문에 파이썬으로 백준 문제를 푸는데 dfs로 해결해야겠다 싶으면 대부분 sys.setrecursionlimit(10000) 이 코드를 추가 해줘야한다. 파이썬은 기본적으로 재귀함수 호출제한을 1000으로 두는데 백준에서 테스트 케이스 검사를 받다보면 1000번 넘게 dfs를 호출해야 하는 경우가 있다. ..