본문 바로가기

알고리즘36

알고리즘 스터디 www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 13305 주유소 문제 어떤 나라에 N개의 도시가 있다. 이 도시들은 일직선 도로 위에 있다. 편의상 일직선을 수평 방향으로 두자. 제일 왼쪽의 도시에서 제일 오른쪽의 도시로 자동차를 이용하여 이동하려고 한다. 인접한 두 도시 사이의 도로들은 서로 길이가 다를 수 있다. 도로 길이의 단위는 km를 사용한다. 처음 출발할 때 자동차에는 기름이 없어서 주유소에서 기름을 넣고 출발하여야 한다. 기름통의.. 2021. 5. 5.
알고리즘 스터디 www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 정말 오랜만의 알고리즘이다... 간만에 들어와보니 단계별로 풀어보기에 문제가 추가됐다! 문제 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1,.. 2021. 5. 5.
알고리즘 스터디 https://programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr 문제 설명 위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다. 삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요. 제한사항 삼.. 2020. 8. 7.
알고리즘 스터디 https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1≤N≤32,000), M(1≤M≤100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의미이�� www.acmicpc.net 문제 N명의 학생들을 키 순서대로 줄을 세우려고 한다. 각 학생의 키를 직접 재서 정렬하면 간단하겠지만, 마땅한 방법이 없어서 두 학생의 키를 비교하는 방법을 사용하기로 하였다. 그나마도 모든 학생들을 다 비교해 본 것이 아니고, 일부 학생들의 키만을 비교해 보았다. 일부 학생들의 키를 비교한 결과가 주어졌을 때, 줄을 세우는 프로그램을 작성하시오. 입력 첫째 .. 2020. 8. 5.
알고리즘 스터디 Google Kickstart Round C 첫번째 문제인 Record Breaker입니다 총 N일동안 테마파크를 열고, i번째 날짜의 방문자 수는 Vi입니다. Record breaking은 이전의 방문자 최대치보다 크고, 그 다음날 보다 방문자가 많아야 합니다. 여기서 Record breaking 날짜 수를 구하는 문제입니다. C++를 사용한 제 풀이입니다. #include #include #include #include #include using namespace std; int n; void solve() { cin >> n; int result = 0, t = -1; vector a(n, 0); for (int i = 0; i > a[i]; } for (int i =.. 2020. 8. 4.
알고리즘 스터디 Google Kick start 2020 Round C 1번째 문제, Countdown 입니다. 자연수 K와 N개의 자연수가 주어지고 i번째 배열을 Ai라고 할 때, A의 부분 배열이 K부터 1까지 -1씩 등차가 이루어지는 것의 개수를 구하는 것입니다. C++를 사용한 제 풀이입니다 #include #include #include #include #include using namespace std; int n, k, t; void solve() { cin >> n >> k; vector a(n, 0); int result = 0; t = k; for (int i = 0; i > a[i]; if (a[i] != t) { t = k; } if (a[i] == t) { --t; .. 2020. 8. 3.