본문 바로가기

알고리즘 문제풀이200

[백준 11286] 알고리즘 97일차 : 절댓값 힙 https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 우선순위 큐 이번엔 비교로직을 구현해야하는 문제 operator 오버로딩해서 절댓값으로 비교하게 하면 된다. 소스코드 #include #include #include #include using namespace std; struct cmp{ bool operator()(int a, int b){ if( abs(a) == abs(b) ) return a > b; else ret.. 2021. 7. 1.
[백준 1927] 알고리즘 96일차 : 최소 힙 https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 우선순위 큐 최소 힙이라 비교로직만 바꿔주면 된다. less 대신 greater로 이번엔 greater자리에 비교연산만 구현해서 넣어봤다. 오름차순이라 a b 였다.. 소스코드 #include #include #include using namespace std; struct cmp{ bool operator()(int a, int b){ r.. 2021. 6. 30.
[백준 11279] 알고리즘 95일차 : 최대 힙 https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net 우선순위 큐 시간제한이 칼같길래..힙 구현해서 풀어야하는줄알고 오랜만에 힙을 다시 공부했는데 STL로 그냥 풀리는 문제였다..기왕한거 최대힙을 구현해서 풀어봤다. 오답노트 시간초과가 한번 났는데 cin tie 끊고 sync_with_stdio false로 하니 풀렸다. 소스코드 priority_queue STL version (AC) #include #include #inclu.. 2021. 6. 29.
[백준 11066] 알고리즘 94일차 : 파일 합치기 https://www.acmicpc.net/problem/11066 11066번: 파일 합치기 소설가인 김대전은 소설을 여러 장(chapter)으로 나누어 쓰는데, 각 장은 각각 다른 파일에 저장하곤 한다. 소설의 모든 장을 쓰고 나서는 각 장이 쓰여진 파일을 합쳐서 최종적으로 소설의 완성본 www.acmicpc.net 동적계획법 핵심 로직 dp[i][j] = dp[i][mid]+dp[mid+1][j] + 누적합(최상위 노드값) 3중 for문을 도는데 첫번째 반복문은 gap 그러니까 범위다 start~end 범위 크기를 1부터 chapter수인 K-1개까지 반복한다. (그럼 마지막 반복문을 돌면 0~K-1까지를 구할 수 있음) 두번째 반복문은 start~end범위 내에서 start의 위치를 한칸씩 뒤로 .. 2021. 6. 28.
[프로그래머스] 튜플 programmers.co.kr/learn/courses/30/lessons/64065?language=cpp 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 휴 잘풀었다 뿌듯 설명은 나중에,, github.com/sio2whocodes/Programmers/blob/main/Programmers/%EC%88%98%EC%8B%9D%EC%B5%9C%EB%8C%80%ED%99%94.cpp sio2whocodes/Programmers 프로그래머스 문제 풀이. Co.. 2021. 5. 7.
[프로그래머스] 수식최대화 programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 정말 다 맞게 한 것 같은데 테스트 3개가 틀려서 뭔가 했더니 answer값 갱신하는 if문 위치가 잘못됐었다.. while문 바로 안에 들어가 있어야하는데 while문 안의 for문안에 들어가 있었다^^.. #include #include #include #include using namespace std; long long cal(long long a, long long.. 2021. 5. 7.
[백준 1475] 알고리즘 93일차 : 방 번호 www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다. www.acmicpc.net C++ 구현 오늘은 2020-21 동계 알고리즘 스터디 마지막날 하지만 쉬어갑니다 :) 6과 9를 뒤집어서 이용할 수 있다는 점이 포인트인 문제 접근방법 기본적으로는 모든 숫자들이 필요한 개수를 배열에 저장하고 그 중에 가장 큰 값이 필요한 숫자 세트의 개수이다. 근데 6과 9는 예외적으로 생각해줘야하니까 마지막에 6의 개수를 저장하고 있는 곳에 9의 개수를 더하고 2로 나눈후 올림해준다. 그리고 9의 개수를 저장하고 있는 곳의 값을 0으로 바꿔준다. 그리고 나서 0부터 9까지의 숫자 개수 중 가장 .. 2021. 2. 26.
[백준 1158] 알고리즘 92일차 : 요세푸스 문제 www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net C++ 큐 이번주 후반부는 쉬어갑시다 접근 방법 K번째 사람을 큐에 순서대로 넣고 마지막에 큐에서 빼면서 출력했다. 아직 큐에 넣지 않은 사람(방문하지 않은 인덱스)이 나올때마다 cnt++을 해주고 cnt가 k가 되면 그 사람을 큐에 넣고 cnt를 0으로 초기화했다 인덱스가 n의 범위를 넘어가면 안되므로 i = (i+1)%n으로 해줬다. 오답노트 i를 증가시키는 코드를 if문 안에 넣어놔서 무한루프가 돌았었다. 소스코드 #include #include using namespace std; bool vi.. 2021. 2. 25.
[백준 13305] 알고리즘 91일차 : 주유소 www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net C++ 그리디 알고리즘 좀 쉬어가려고 그리디 풀었는데 그리디 무려 5개월만에 풀어서 좀 낯설었다. 접근방법 지금까지의 최저가를 갖고 가다가 그 최저가 보다 더 적은 값을 만나면 거기까지는 지금까지의 최저가로 주유해서 간 다음 그 이후부턴 그 주유소에서 주유하는 식 오답노트 거리랑 금액이 모두 최대가 int최대범위여서 total금액과 중간중간 거리를 더하는 변수는 long long 타입을 써줘야한다.. 2021. 2. 24.