본문 바로가기

Algorithm/백준22

1926. 그림 (C++) 이번 문제느 BFS를 이용하여 푸는 문제였다. BFS를 사실 학교 다녔을 때 배웠던 기억이 있긴한데, 그게 뭐였는지는 까맣게 잊고 있었다.. 그런데 이번에 강의를 통해서 다시금 기억과 구현을 하게 됐고, 그 첫번째 문제로 이 문제를 택했다. 이 문제는 BFS 를 사용하는데 있어서 가장 기본적인 문제라고 생각한다. 문제에서 보면 그림의 개수 와 그림중 가장 넓이가 넓은 것을 출력하라고 했다. 원하는 수가 두개이다. 예제 입력 1을 보고 설명해보자면, 1로 시작하는 그림은 총 4개, 가장 큰 그림은 9의 크기인 우 하단의 그림이 될 것이다. 이걸 어떻게 풀면 될까? BFS를 사용하자! BFS : 다차원 배열에서 각 칸을 방문할 때 너비를 우선으로 방문하는 알고리즘 BFS는 나중에 다른 글로 자세히 설명하겠다.. 2021. 4. 18.
2504. 괄호의 값 (C++) 한 3일 걸린 듯 하다..끝끝내 혼자 힘으로 풀지는 못했다.. 거의 다 왔는데 항상 이런다.. 암튼 이 알고리즘을 생각하기가 너무 어려웠다. 괄호마다 곱하는 수도 다르고 닫는 위치에 따라 더할지 곱할지가 정해지니 머리가 터질 지경이었다. 알고리즘은 다음과 같다. 1) 왼쪽 괄호가 나올 때마다 스택에 넣는다. tmp를 선언하고 소괄호가 나올 때엔 2를 곱하고 대괄호가 나올 때엔 3을 곱한다. tmp 는 0으로 초기화하는것이 아닌 1로 초기화를 해줘야 한다. 곱하기는 0과 곱하면 무조건 0 이지않은가. 2) 출력의 문구에서 볼 수 있듯이 입력이 올바르지 못한 괄호열이면 반드시 0을 출력해야 한다고 했다. 그래서 그 조건문 또한 bool로 구분하여 추가했다. 3) 오른쪽 괄호가 나올경우 스택에서 뺀다. 3-1.. 2021. 4. 16.
5430 . AC (C++) 하..AC 나오는 문제였다. 아니 풀이는 다 풀었는데 50퍼에서 계속 틀렸읍니다. 뜨니 멘탈이 와르르.. 아무튼 이 문제는 덱을 이용하여 푸는 문제이다. 근데 문제 중간에서 R을 입력하면 뒤집는다고 나와있는데, 굳이 덱에 있는 숫자들을 돌릴 필요는 없다라는 걸 이틀만에 깨달았다;;; 생각보다 간단하게 생각하면 된다. bool을 이용해 뒤집었을때, 안뒤집어졌을때, 에러가 났을때, 안났을때 등을 설정해놓으면 생각보다 쉽게 문제를 풀 수 있었다. 근데 아까 50퍼에서 틀렸다는건 아마도 input 단계에서 입력하는 방법이 잘못 됐던것 같다. 난 그냥 숫자만 입력하면 되는줄 알았지만, ㄹㅇ 예시 입력 페이지에서 나오는 것처럼 입력을 해야 했던 것이었다. 이것도 이틀만에 알아채서 그거 찾아보며 구현을 하느라 좀 걸.. 2021. 4. 14.
10845. 큐(C++) 문제에서 나오는 큐의 기능들을 배열을 이용해서 구현하거나, STL을 사용하면 되는 문제였다. 사실 -1이 나오는 예외 처리 말고는 어려운게 없는 문제다. 먼저 배열로 사용한 문제 #include using namespace std; const int MX = 1000005; int dat[MX]; int head = 0, tail = 0; void push(int x){ if(tail > T; while(T--) { cin >> con; if(con == "push") { int num; cin >> num; push(num); } else if(con == "pop") { cout 2021. 4. 12.

IT_learning's Commit