Bruteforce 완전 탐색 알고리즘이 문제 의도였지만 못 풀고 검색을 통해 DFS로 해결(;′⌒\`)
어떻게 푸는지 감이 안 잡혀서 검색의 힘을 좀 빌렸음(゚Д゚\*)ノ
그래도 이건 내가 풀었다. 근데 while문 뭔가 이상해서 좀 오래걸림.
아니 왜 예전에 풀었던 문제인데 하나도 기억이 안나는 걸까 ㅇㅂㅇ
그래도 이번주 Greedy Algorithm 문제는 쉬운 편이었다👩💻~
P로 나눠야하는 경우를 예외처리 해줬어야 했는데 처음에 if (P>0) 없이 그냥 돌려서 런타임 에러가 떠버렸다. 조심해야지
첨에 한 번 틀렸는데 바보같이 desc 함수에서 부호를 거꾸로 써버려서 틀렸다 ㅋㅋ,,
STL에서 제공하는 priority_queue를 이용하면 쉬운 문제
deque을 사용하길 잘했다는 생각이 들고 하필 숫자 입력을 1,2... 형식으로 줘서 힘들었다,,,ㅠㅁㅠ
처음에 규칙 찾는게 어려웠다. 그림을 계속 보면 규칙을 찾을 수 있다(¬‿¬)
dfs, bfs는 아직도 어렵다ㅠㅁㅠ
이 문제는 솔루션과 오빠가 녹아있다^^
2667번 문제를 풀고 푸니까 확실히 거의 똑같은 문제라 그런지 풀만했다 ˉ﹃ˉ
이번 스터디는 나무 자르기 문제가 제일 어려웠다 ㅠㅁㅠ
원래 DFS로 풀어가기로 했었는데 예제 중 하나의 값이 자꾸 이상하게 출력돼서 결국 또 BFS로 풀었다.
처음엔 어떻게 풀어야할지 잘 몰랐는데 알고보니 백준 피보나치 문제와 다를 것 없던 쉬운 문제였음
if문 범위 설정할 때 부등호를 잘못했었는지 시간낭비도 하고 입력 받을 때 scanf로 받아놓고 ios::sync_with_stdio(0);를 써 틀렸었음.
정답률이 꽤 낮아서 어려울 줄 알았는데 오히려 정답률이 높은 문제보다 쉽게 풀어버린🤔
역시 동빈나 선생님의 KMP 알고리즘 강의를 듣고 나니까 그 전보단 이해가 훨씬 잘 됐다. 근데 혼자서 이렇게 못 짤 것 같은데,,?
나는 일단 바보가 맞다. 애너그램이 두 문자열 크기가 같아야 하는 것까진 몰랐지,,
문제를 한 번 읽고는 무슨 말인지 이해하지 못해서 여러번 읽고 난 후에야 이해가 됐고 혼자 힘으로는 풀기 어려웠던 문제,,bfs로 풀 수 있을 줄 알았는데 (모든 방면을 검사하는 것이 아니기 때문에) 불가능한 문제였다!!
C++ STL의 next_permutation을 쓰려고 했지만 내 맘대로 되지 않아서 구글에 순열 구하는 알고리즘을 찾아봤다.
중복을 허용하지 않는 순열 구하는 방법을 찾았더니 C++ STL에 next_permutation이라는 것을 알게 되었다.next_permutation은 오름차순으로 정렬된 배열만 사용 가능하며 algorithm 헤더 파일이 필요하다.
B가 홀수일 때 제대로 체크해주지 않아서 실패를 엄청 많이했다. 내 정답률,,
이분탐색 낯설다,,문제를 더 많이 풀어봐야겠다.
다이나믹 프로그래밍 너무 어려워!!!
이렇게 하면 풀릴줄 알았는데 시간 초과가 났다,,
처음엔 왜인지 queue를 이용해 풀려고 했었다. 그래도 stack을 이용해서 풀어야한다는 걸 너무 늦게 알지 않아서 다행이었다.그림을 그리면서 이해해보니 규칙(?)을 발견할 수 있었다.처음에는 이렇게 짝수만 된다는걸 생각을 못하고 이런 규칙이 있구나 생각했었는데 생각
다른 분들 보니까 array에 넣어서 쉽게 문자열로 바꿨던데 나는 함수밖에 생각하지 못했다.
vector의 pair를 이용했다. pair의 first에는 숫자를, second에는 순서를 넣어 first를 기준으로 오름차순 sort 시켰고 tmp를 활용해 같은 숫자에는 같은 인덱스?를 넣어주고 다른 숫자라면 1씩 증가시키며 수를 넣어주었다.그리고 second를
간단한 구현 문제 하나도 헤매다니 ㅠㅠ
규칙이 있을 것만 같아서 마냥 삽질로 코드를 짜봤는데 역시나 아니었고 결국 bruteforce 함수를 재귀로 호출해 해결
내가 풀었다고 할 순 없지만,,고민을 한참 해봤는데 아무리 손으로 그려봐도 해당 출력이 이해가 안돼서 문제를 마지막으로 다시 한 번 읽어보니까 계속 이상하게 읽고 있었다😠결국 스터디 시간이 다 돼서 다른 분 코드의 도움을 받은 ㅠㅠㅠ
단순히 입력을 string으로 받고 pop / push / top / size / empty를 구분하여 숫자를 입력받아야 하는 push에만 따로 cin >> n 으로 수를 입력받음나머지는 그냥 stack 기능을 사용하여 맞게 출력시켜 준 것굉장히 쉬운 문제였고 문제 풀
NO가 나오지 않는 경우 즉, + -를 출력하는 경우는 잘 됐는데 NO를 출력하는 입력에서 맞는 출력이 나오지 않아서 조금 헤맸다.어려운 문제가 아니었는데🙄
오랜만에 빨리 푼 문제
단순한 deque문제i로 언제 카드를 빼고 언제 카드를 아래로 옮겨야 하는지 체크tmp에 front의 원소를 저장시켜 가장 아래로 빼줌deque에 대해서 한 번 정리해야겠다.
"회전한다" 라는 말이 들어간 문제는 보통 deque로 해결하면 될 것 같다,,?근데 이건 무슨 문제 이해하는데만 얼마가 걸린건지,,사실 내가 이해한게 맞는건지 모르겠다. 맞았으니까 맞겠지,,😨
1 2 3 4의 무게가 성립된다고 할 때 다음 확인할 추의 무게가 5라면 5 6 7 8 9 까지도 가능하다. 하지만 다음 추의 무게가 5보다 큰 6이라고 하면 5를 제외하고 6 7 8 9 10이 가능해진다.그래서 for문을 돌며 추의 무게가 그것보다 클 때 반복문을 탈
예전에 풀다가 실패했는데 드디어 풀었다!간단하게 string으로 식을 받아 parsing함수로 숫자와 연산자를 구분해 벡터에 저장시켜준다. 그리고 calculator함수를 불러 최솟값을 계산해주면 된다.parsing함수는 연산자를 만나면 tmp에 저장하던 값을 숫자를
이 문제는 1차원 BFS지만 다른 BFS 문제처럼 큐를 선언하고 방문 여부를 저장할 배열(1차원)을 만든다.출발 지점을 함수의 파라미터로 받으며 큐에 넣고 큐가 빌 때까지 x+1, x-1, x\*2 계산을 하며 범위를 벗어나지 않으며 방문하지 않았는지 여부를 탐색하며
✔️ 16400 소수 화폐 이 문제를 풀기 위해서는 에라토스테네스의 체 개념이 필요하다. 링크를 통해 내용을 참고하면 좋을 것 같다. 에라토스테네스의 체를 이용해 소수를 판별해 낸 뒤 DP로 2293번 문제처럼 풀어내면 된다. 그럼 2293 문제를 먼저 풀어보자