본문 바로가기

그리디 알고리즘2

[백준 1700] 멀티탭 스케쥴링 (C++) https://www.acmicpc.net/problem/1700그리디 Greedy멀티탭 구의 개수랑 전기용품 사용 순서가 주어지면 플러그를 뺐다 꽂는 횟수의 최솟값을 출력하는 문제 접근 방법우선 꽂혀있는지 확인 (isOn 배열 사용 - 기기별 꽂혀있는지 여부 저장), 멀티탭에 여유공간이 있는지 확인(멀티탭 여유공간 count)꽂혀있지도 않고, 멀티탭이 모두 사용중인 경우에 대해,1. 뽑을 기기 번호 (target), 지금 사용 순서와 꽂혀있는 기기의 사용 순서 사이의 거리 (distance) 초기화2. 꽂혀있는 기기에 대해서 하나씩 스케쥴상의 거리 계산2-1. 이때 이미 등장했던 기기가 또 나올 수 있기 때문에, 기기가 처음 등장하는 순서와의 거리만 계산해야 하기 때문에, existLater라는 변수를.. 2024. 10. 22.
[백준 1439] 뒤집기 (C++) https://www.acmicpc.net/problem/1439 그리디, 문자열S=001100 이런 이진수로 구성된 문자열이 주어지고, 연속하는 같은 숫자는 한꺼번에 뒤집을 수 있음이때 모든 문자를 같은 문자로 만드려면 최소 몇번 뒤집어야할까! 가 문제임 접근방법1. 0과 1 각각 묶음의 갯수를 구함2. 둘 중 최소를 출력함 (단, 둘 중 하나가 0인 경우 = 원래도 모두 같은 문자로 구성된 문자열이었다는 거 -> 0 출력)끄읕~ 오답노트- C++에서 string.size()가 unsigned int 인가 그래서 바로 for문 조건에 넣어버리면 오류나서 한번 변수로 담아줘야함..(원래 이랬나..)- cur(현재 연속하고 있던 문자)를 안바꿔줘서 틀렸었음~앗차차- cout 안에 삼항연산자 안들어가고 밖에.. 2024. 6. 20.