역수열
2021. 10. 12. 11:41
⏰ 코딩테스트/그리디
역수열(그리디) 1부터 n까지의 수를 한 번씩만 사용하여 이루어진 수열이 있을 때, 1부터 n까지 각각의 수 앞에 놓여 있는 자신보다 큰 수들의 개수를 수열로 표현한 것을 역수열이라 한다. 예를 들어 다음과 같은 수열의 경우 4 8 6 2 5 1 3 7 1앞에 놓인 1보다 큰 수는 4, 8, 6, 2, 5 이렇게 5개이고, 2앞에 놓인 2보다 큰 수는 4, 8, 6 이렇게 3개, 3앞에 놓인 3보다 큰 수는 4, 8, 6, 5 이렇게 4개...... 따라서 4 8 6 2 5 1 3 7의 역수열은 5 3 4 0 2 1 1 0 이 된다. n과 1부터 n까지의 수를 사용하여 이루어진 수열의 역수열이 주어졌을 때, 원래의 수열을 출력하는 프로그램을 작성하세요. ▣ 입력설명 첫 번째 줄에 자연수 N(3
증가수열 만들기
2021. 10. 12. 10:44
⏰ 코딩테스트/그리디
증가수열 만들기(그리디) 1부터 N까지의 모든 자연수로 구성된 길이 N의 수열이 주어집니다. 이 수열의 왼쪽 맨 끝 숫자 또는 오른쪽 맨 끝 숫자 중 하나를 가져와 나열하여 가장 긴 증가수열을 만듭니다. 이때 수열에서 가져온 숫자(왼쪽 맨 끝 또는 오른쪽 맨 끝)는 그 수열에서 제거됩니다. 예를 들어 2 4 5 1 3 이 주어지면 만들 수 있는 가장 긴 증가수열의 길이는 4입니다. 맨 처음 왼쪽 끝에서 2를 가져오고, 그 다음 오른쪽 끝에서 3을 가져오고, 왼쪽 끝에서 4, 왼쪽 끝에서 5를 가져와 2 3 4 5 증가수열을 만들 수 있습니다. ▣ 입력설명 첫째 줄에 자연수 N(3
침몰하는 타이타닉
2021. 10. 9. 15:07
⏰ 코딩테스트/그리디
침몰하는 타이타닉(그리디) 유럽에서 가장 유명했던 유람선 타이타닉이 침몰하고 있습니다. 유람선에는 N명의 승객이 타고 있습니다. 구명보트를 타고 탈출해야 하는데 타이타닉에 있는 구명보트는 2명 이하로만 탈 수 있으며, 보트 한 개에 탈 수 있는 총 무게도 M kg 이하로 제한되어 있습니다. N명의 승객 몸무게가 주어졌을 때 승객 모두가 탈출하기 위한 구명보트의 최소개수를 출력하는 프로그램을 작성하세요. ▣ 입력설명 첫째 줄에 자연수 N(5
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbciLEz%2Fbtrg8X7jgGX%2Fa8XdXEbKDgpkaGhok3aXwK%2Fimg.png)
창고 정리
2021. 10. 8. 11:32
⏰ 코딩테스트/그리디
창고 정리(그리디) 창고에 상자가 가로방향으로 일렬로 쌓여 있습니다. 만약 가로의 길이가 7이라면 1열은 높이가 6으로 6개의 상자가 쌓여 있고, 2열은 3개의 상자, 3열은 9개의 상자가 쌓여 있으며 높이는 9라고 읽는다. 창고 높이 조정은 가장 높은 곳에 상자를 가장 낮은 곳으로 이동하는 것을 말한다. 가장 높은 곳이나 가장 낮은 곳이 여러곳이면 그 중 아무거나 선택하면 된다. 위에 그림을 1회 높이 조정을 하면 다음과 같아진다. 창고의 가로 길이와 각 열의 상자 높이가 주어집니다. m회의 높이 조정을 한 후 가장 높은 곳과 가장 낮은 곳의 차이를 출력하는 프로그램을 작성하세요. ▣ 입력설명 첫 번째 줄에 창고 가로의 길이인 자연수 L(1
씨름 선수
2021. 10. 8. 10:34
⏰ 코딩테스트/그리디
씨름 선수(그리디) 현수는 씨름 감독입니다. 현수는 씨름 선수를 선발공고를 냈고, N명의 지원자가 지원을 했습니다. 현수는 각 지원자의 키와 몸무게 정보를 알고 있습니다. 현수는 씨름 선수 선발 원칙을 다음과 같이 정했습니다. “다른 모든 지원자와 일대일 비교하여 키와 몸무게 중 적어도 하나는 크거나, 무거운 지원자만 뽑기로 했습니다.” 만약 A라는 지원자보다 키도 크고 몸무게도 무거운 지원자가 존재한다면 A지원자는 탈락입니다. ▣ 입력설명 첫째 줄에 지원자의 수 N(5
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdaPReS%2Fbtrg5DURtjw%2FGj1v7PcUVXRhDgAkL8vbk1%2Fimg.png)
백준 알고리즘 - 1931 - 회의실 배정
2021. 10. 7. 10:19
⏰ 코딩테스트/그리디
풀이 그리디 : 문제 푸는 단계에서 가장 좋은 것을 선택하는 것 보통의 그리디는 대부분 정렬과 동반되어 나온다. 회의가 끝나는 시각을 기준으로 정렬을 해야 최대한 회의를 많이 할 수 있다. 빨리 끝나는 것이 중요하기 때문이다. 2 3 1 4 3 5 → 회의 진행 가능 4 6 5 7 → 회의 진행 가능 그리고 회의의 끝나는 시간과 다음 회의의 시작 시간을 비교해 보는 것이다. 코드 1 n = int(input()) meeting = [] for i in range(n): first, second = map(int,input().split()) meeting.append((first, second)) # 튜플 형태로 저장 meeting.sort(key = lambda x: (x[1], x[0])) # x[1..
마구간 정하기(결정알고리즘)
2021. 10. 6. 21:27
⏰ 코딩테스트/그리디
마구간 정하기(결정알고리즘) N개의 마구간이 수직선상에 있습니다. 각 마구간은 x1, x2, x3, ......, xN의 좌표를 가지며, 마구간 간에 좌표가 중복되는 일은 없습니다. 현수는 C마리의 말을 가지고 있는데, 이 말들은 서로 가까이 있는 것을 좋아하지 않습니다. 각 마구간에는 한 마리의 말만 넣을 수 있고, 가장 가까운 두 말의 거리가 최대가 되게 말을 마구간에 배치하고 싶습니다. C마리의 말을 N개의 마구간에 배치했을 때 가장 가까운 두 말의 거리가 최대가 되는 그 최대값을 출력하는 프로그램을 작성하세요. ▣ 입력 설명 첫 줄에 자연수 N(3
뮤직비디오(결정알고리즘)
2021. 10. 5. 12:11
⏰ 코딩테스트/그리디
뮤직비디오(결정알고리즘) 지니레코드에서는 불세출의 가수 조영필의 라이브 동영상을 DVD로 만들어 판매하려 한다. DVD에는 총 N개의 곡이 들어가는데, DVD에 녹화할 때에는 라이브에서의 순서가 그대로 유지되어야 한다. 순서가 바뀌는 것을 우리의 가수 조영필씨가 매우 싫어한다. 즉, 1번 노래와 5번 노래를 같은 DVD에 녹화하기 위해서는 1번과 5번 사이의 모든 노래도 같은 DVD에 녹화해야 한다. 또한 한 노래를 쪼개서 두 개의 DVD에 녹화하면 안된다. 지니레코드 입장에서는 이 DVD가 팔릴 것인지 확신할 수 없기 때문에 이 사업에 낭비되는 DVD를 가급적 줄이려고 한다. 고민 끝에 지니레코드는 M개의 DVD에 모든 동영상을 녹화하기로 하였다. 이 때 DVD의 크기(녹화 가능한 길이)를 최소로 하려..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR7sIQ%2FbtrgBmnELJq%2Fh0DIQQhH6voNSTpLUvdawk%2Fimg.png)
백준 알고리즘 - 1654 - 랜선 자르기
2021. 10. 5. 10:59
⏰ 코딩테스트/그리디
틀린 코드 k, n = map(int,input().split()) a = [] for _ in range(k): a.append(int(input())) num = sum(a)//n while True: ans=0 for i in range(k): ans += a[i]//num if ans==n: print(num) break num -= 1 답은 맞았지만 시간초과. 코드 k, n = map(int,input().split()) def Count(len): # 길이를 변수로 받아서 cnt = 0 for i in line: cnt+=(i//len) return cnt line = [] ans = 0 largest = 0 # 랜선 중 가장 긴 값 for i in range(k): tmp = int(inpu..
이분 검색
2021. 10. 3. 12:06
⏰ 코딩테스트/그리디
이분 검색 임의의 N개의 숫자가 입력으로 주어집니다. N개의 수를 오름차순으로 정렬한 다음 N개의 수 중 한 개의 수인 M이 주어지면 이분검색으로 M이 정렬된 상태에서 몇 번째에 있는지 구하는 프로그램을 작성하세요. 단 중복값은 존재하지 않습니다. ▣ 입력설명 첫 줄에 한 줄에 자연수 N(3