본문 바로가기

# 공부/# 알고리즘11

Dynamic Programming [ 동적 계획법 ] 최근 AI프로그래밍을 듣던 중 Hill climbing 알고리즘이 나왔는데 파면 팔수록 동적계획법에 대한 얘기가 잔뜩 나와서 과제를 마무리하고 덤볐다. 이건 사실 지금까지 배운 연결리스트라던가 ???알고리즘과는 다르게 좀 더 general한 범위이다. 무슨 말이냐면 딱히 정해진 루트가 없다는 말이다. 그냥 상황에 따라 더 우선사항이 되는 루트를 찾아서 리턴하는건데 요새 잘나온 카카오맵,네이버지도 등 네비게이션 앱을 생각하면 되는데 길을 잘못들거나 먼 거리를갈때 이상하게 돌아가는 경우가 있는데 그건 네비가 중간에 막히는 도로가 있으니 좀 돌더라도 이 길이 더 빠르다고 느꼈기에 그렇게 알려주는것이다. 사실 Steepest Descent를 하면서도 neighbors값 중 목표치에 가까운 값을 채택하는걸 보고 .. 2021. 11. 9.
[큐,덱]#11866 c++ 요세푸스 # 직접 공부하고 통과한 코드입니다. # 최대한 자세하게 해설 및 풀이 위주로합니다. # 나름 풀면서 재밌었거나 어려운것들 위주로 올립니다. 문제를 풀때 가장 첫번째로 해야할건 입력과 출력 예제를 살펴보는 것이다. 7 3이 입력되었고 숫자들이 주룩 나온다. 문제를 요약하자면 N명의 사람이 원을 이뤄 앉아 K번째 사람이 빠지는 룰이다. 이는 계속 반복해서 모든 사람이 제거될때까지 반복한다. 그림을 그려보자면 이렇다. 예제에 나온 7 3을 기준으로 그려보면 중요한건 0에서 3을 더한 3번째 사람이 먼저 제거되지만 카운트 시작은 1로 해야한다는 점이다. 이는 두가지로 해결할 수 있다. for문으로 반복할 시 0부터 시작해서 3번째마다 제거해라 , 혹은 1부터 시작하되 i==1일때만 +=2 하고 그 외는 +=3.. 2021. 4. 9.
#2146 c++ 백준 알고리즘 간단한 설명 및 코드 2164번: 카드2 (acmicpc.net) 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 항상 문제를 풀때 가장 먼저 파악해야하는건 입력과 출력이다. 그런 후 제약조건을 확인하고 그것을 간소화하면 코드짜기 더욱 편하다. 규칙을 간소화하면 이렇다. 1. 1번은 제일 위 / N번은 제일 밑 2. 순환순서 :: i번째는 버리고 i+1번째는 맨 밑으로 이동 즉) N = 4일경우 1234 -> 1버리고 234 -> 342 -> 3버리고 42 -> 24 -> 2버리고 4 주로 STL로 풀이 가능한 문제들 stack .. 2021. 4. 6.
[스택] 괄호 :: 백준 알고리즘 9012번 C++ 백준 알고리즘에서 예제가 두개가 나온다면 대개 두번째 예제에서 키를 찾을 수 있다. 이 문제도 같은데, 1번 예제에서 파악할 수 있는것은 문제에 나와있는대로 VPS에 대한 룰이다. 여는 괄호인 '('와 닫는 괄호인 ')'가 쌍으로 나와야 VPS라는 간단한 룰이다. 하지만 2번 예제에서는 좀 더 자세하게 알려주는데 ())(() -> NO 위와 같이 나와있다. 여는 괄호 3개 닫는 괄호 3개로 모두 쌍을 이루고 있지만, 중간에 닫는 괄호와 여는 괄호의 위치가 반대로 나와있다. 이는 즉 괄호의 쓰임새에 맞게 짝이 맞는 여는 괄호가 앞에 나온게 아니면 닫는 괄호는 못쓴다는 뜻이다. 예로들어 ((())()) 이와 같은 괄호 나열은 YES가 나온다는 것이다. 조금 더 쉽게 이해하기 위해 뜯어 보자면 ( ( ( ) .. 2021. 1. 17.