목록알고리즘 (4)
끄적끄적
나는 ArrayList를 통해 바구니를 구현 하였으나 제출 후에 확인해 보니 대부분 스택으로 푸신 것 같다. 난 각 라인 별로 배열를 만들고 이를 다시 Arraylist로 저장하였다. 바구니도 Arraylist로 두어 모든 인형을 바구니에 넣은 뒤 해결하였다. 또 처음 풀었을 때 테스트 케이스 1,2번에서 자꾸 틀리곤 했는데 질문을 참고한 결과 바구니에서 연속 같은 값의 인형을 뽑고 뽑은 인형의 위치보다 앞부분의 인형과 뒷부분의 인형이 같아도 사라져야 하기에, 다시 위치를 초기화해주어야 했다. [[0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 2, 1, 0, 0], [0, 2, 1, 0, 0], [0, 2, 1, 0, 0]] [1, 2, 3, 3, 2, 3, 1] 4 위의 테스트 케이..
이 문제는 처음엔 내가 있는 위치에서 최대한 멀리 뛰는 것을 생각했는데 자세히 살펴보니 dp를 이용해서 푼다는 것을 알았다. 그런데 내가 아직 dp가 익숙하지않아서 dp[i]에 들어갈 값이 점프해서 i노드까지 올 수 있는 최소 점프 수라는 것은 알았는데 이를 dp로 이용했다고 하기엔 애매한 부분이 있는 것 같다. 다른 잘 쓴 코드를 보면서 조금 더 학습해야겠다고 느꼈다. #include using namespace std; int main() { int N = 0; cin >> N; int* arr =new int[N]; int*road = new int[N];// 점프해서 i노드까지 올수있는 최소 점프 수 fill_n(road, N, 10000); //큰수로 배열 초기화 for (int i = 0; i..
굉장히 간단해 보이는 문제인데, 처음 c++로 풀고 제출해도 계속 오류가 나서 고생하였다. 찾아보니 오버플로우로 인한 문제였다. 그래서 값의 크기가 큰 파이썬으로 다시 작성하여 제출하였다. 파이썬으로 처음 문제를 제출하게되어 여러 함수를 찾아서 어색하게 작성하였는데, 정보처리기사 필기에도 나온만큼 간단한 문제는 파이썬으로 풀어서 제출해야겠다. a,b=input().split() a=int(a) b=int(b) mo=1 # 분모 de=1 # 분자 if(a/2
이 문제는 순환큐 문제라 하여 순환큐를 구현해야 할까 고민하였으나 직접 원소를 삽입하는 것이 아니라서 그냥 배열을 이동하는 것으로 구현하였다. 내가 찾는 값이 현재 가장 처음 원소에서 왼쪽으로 얼마나 떨어져 있는지 확인하고 그 값이 과반수 이상이면 오른쪽으로 이동하고 과반수가 되지 않으면 왼쪽으로 이동하였다. #include using namespace std; int main() { int size; //큐의 크기 int popnum; //뽑아낼 원소 cin >> size >> popnum; int *find = new int[popnum]; //뽑아낼원소가 저장된 배열 int *arr = new int[size]; // 큐 배열 bool right = false; // 오른쪽으로 이동할지 왼쪽으로 이..