분류 전체보기(25)
-
백준 #1158
난이도:★☆☆☆☆☆☆☆☆☆ 이번 문제부터는 그냥 내가 느낀 난이도를 표시해보려고 한다. 나중에 다시 풀 때 조절하면 되니까.. 문제 접근 방법 음 이번 주차 과제 이전에 풍선 터트리기 문제를 실패했는데 그 문제와 뭔가 비슷한 느낌이 들어서 list로 풀면 좋을 것 같았다. n번째 수를 잡아서 출력하는 건데 list안에서 이동시키면서 이미 지나온 위치는 0으로 바꾸고 0인 위치는 무시해주고, 만약 iterator가 마지막에서 오른쪽으로 이동하려고 하면 처음으로 이동시켜주었다. 이 문제 역시 크게 어려웠던 점이 없었기 때문에 주석으로 표시하겠습니다 #include #include using namespace std; int main() { listcircle; int N,K; //배열의 수, n번째 수 ci..
2022.07.26 -
백준 #1406
* 사진 클릭하면 링크이동 * 문제 접근방법 나는 커서를 보자마자 LIST가 떠올랐다. 왜냐하면 일단 커서라고 직관적으로 힌트를 주기도 했고, 시간제한이 짧은 문제인데 삭제와 삽입을 상수 시간에 해줄 수 있는 자료구조가 LIST라고 생각했다. 크게 어려웠던 점이 없었지만 좀 헷갈렸던 부분은 문장에 마지막에 위치한다는 말을 보고 나는 리스트 마지막에 ' '를 넣어 공간을 추가로 만들었다. 하지만 LIST.END()를 자체가 {'a','b','c'}이면 'c'의 위치가 아닌 'c'의 다음의 위치라는 것을 뒤늦게 떠올렸다. 이것 외에는 크게 어려웠던 점이 없었기에 주석으로 코드 설명 후 마치겠다. #include #include using namespace std; int main() { ios_base::s..
2022.07.26 -
백준 #5430
입력값 테스트 케이스인 T, 명령문이 주어지고, 배열의 정수의 개수, 배열의 입력될 정수들을 입력받는다. 출력값 R을 입력받았을때 배열을 reverse해주고 D를 입력받았을때 첫번째 수를 버리는 명령문을 실행한다.그리고 실행후의 결과를 출력한다. 단, D는 배열이 비어있을 때 실행시 error를 출력한다. 『문제 접근 방법』 함수가 단순히 reverse와 첫 번째 원소 삭제뿐이어서 간단하게 해결할 수 있는 문제라고 생각했다. 그렇지만, 입력으로 받는 정수의 배열이 그냥 숫자가 아니라 [1,2,3]이런식의 문자열로 주어지는게 고민이 되었다. 그래서 처음에 접근했던 방식은 문자열자체를 하나씩 입력받되 cin자체를 이용해서 걸러보려고했다. #include #include #include using namesp..
2022.07.23 -
백준 #10799
문제 접근방식 이 문제를 보고 운이 좋게도 자료구조시간에 stack 연습문제로 풀었던 괄호찾기문제가 떠올랐다. 그 문제는 괄호를 (,)이렇게 짝지어 내는 문제였는데 덕분에 stack을 써봐야겠다는 생각을 쉽게 할 수 있었다. 하지만 문제자체를 이해하기 어려워서 종이에 직접 괄호를 스틱으로 바꾸고 레이저로 잘라보았다. 처음으로 떠오른 아이디어는 레이저를 다른 char(나는 *로표시했다.)로 표시해보자였다. 코드는 다음과 같다. #include #include #include using namespace std; int main() { int total=0; //출력값 stackcut_stick; //괄호들을 넣을스택 string bracket; //괄호들을 입력받을 string cin >> bracket;..
2022.07.22 -
백준 #7785
문제 접근~ 1302번을 풀면서 map이라는 stl을 공부하게되었다. 이 문제를 보고 map으로 string pair로 관리해주면 편할 것 같은 생각이 들었다. 나는 enter일때 map에 넣고 leave일때 삭제하고 정렬만해주면 풀릴것같다고 생각해서 실행에 옮겼다. #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); mapm; int n; cin >> n; while (n--) { string cmd1, cmd2; cin >> cmd1 >> cmd2; if (cmd2 == "enter") { m.insert({ cmd1, cmd2 }); } else if (cmd2 == "l..
2022.07.19 -
백준#2075
입력: N 출력: N*N개의 숫자중에서 N번째로 큰 숫자를 출력하기 문제 접근방법 처음엔 표의 숫자들이 자신의 밑에있는 숫자보다 바로위에있는 숫자가 더 크다는말에 어떤 수학적 규칙이 있는지 계속 봤던 것 같다. 백준의 시간제한이나 메모리 제한에 대한 개념이 잡혀있지않아서 당연히 정렬하면 틀리겠지라고 생각하고 손도 못대고 고민만 하다가. 그냥 N*N개의 숫자를 하나하나 비교해서 N번째 숫자를 출력했다. 결과는 당연히 오답이였다. 그래서 벡터에 넣고 sort하면 퀵정렬로 해준다고하길래 무작정 벡터에 넣고 전체 sort를 해보았다. 그랬더니 메모리초과라고 나와서 이거 시간은 안넘나보네라고 생각했다. 그 다음시도했던게 자료구조 강의시간에 배운 heap정렬이였다. 하지만 이것도 메모리초과가나와서 N개를 저장하고 ..
2022.07.19