C++61 후위표기식 1918 c++ 푼것중 가장 티어가 높은 골드2 문제다!!!! ~~ 후위표기식은 Data Structure 에서 배우는 내용이다. 문제에서 우선순위에 따라 괄호를 무조건 주는게 아니다. 이것때문에 코드가 뒤죽박죽 헷갈리고 말았다. 가령 곱셈은 생략한다. 먼저, 나름의 규칙을 정한다. 0. 기호들은 스택에 푸시한다 )가 오면 (가 올때까지 있는 기호들 싹다 프륀트 1번과 상관없이 * 나 / 들은 우선순위라는게 존재하기때문에 얘네가 입력되면 스위치켜준다.[2-1] : 입력받을떄 스택의 최상단에 *나/가 있으면 바로 출력 2번에서 스위치를 킨상태로 문자가 입력되면 그뒤에 *나/를 출력(pop) 3번에 문자대신 ( 가 입력되면 스위치 꺼준다. *,/, (가 아닌 문자가 입력될때 스택 최상단이 (가아니면 하나 출력(pop.. 2023. 1. 12. 백준 실4 수찾기 1920 c++ 이분탐색 막구현은 너무 쉽다. 다만 시간제한이 걸려있다는점. 시간복잡도가 입력값에 엄청 큰 영향을 준다는점. 그래서! 이중 for문 을 썼었는데 (n의 제곱) 시간오바돼서 이분탐색(시간복잡도 log n ) 을 썼다. 이분탐색이 뭐냐? 시작점과 끝점 (배열의 인덱스를 말함) 을 변수에 넣어주고 마구 돌려요 잘 읽어보면 temp가 우리가 찾고자 하는 숫자에요? 그럼 얘가 mid보다 큰지 안큰지를 비교를통해 left 혹은right값을 mid 바로 우 혹은 좌로 바꿉니다!!!!그래서 범위를 반씩 쪼개는거에요. 마치 업다운 게임처럼 ,,,, 단. 이걸 쓰려면 정보가 들어있는 배열(여기선 벡터) 걔네들이 오름차순 정렬이어야 합니다. 정렬이 되어있어야해요. 그리고 9번줄은 안써주면 cout, cin 이녀석들이 시간.. 2023. 1. 10. 백준10799 쇠막대기 c++ 이번 문제는 깔끔한 알고리즘을 떠올리는것이 어려웠던 문제이다. 오로지 '(' 와 ')' 만 주어지고 열리자마자 닫혀야 이것이 레이저라는것을 알 수 있다. 생각: 아 그럼 열리자마자 닫힐때 즉 열려있을때 어떤 표시를 해놓으면 닫힘이 들어올때 바로 그 순간이 레이저구나!! 열려있으면 스위치를 1로 해놓고 닫힐때 그순간 스위치를 꺼버리면 되네!!!????? 일단 퍼즐 한조각은 찾았다.. 그~~다음에 흠,, 레이저가 지나가면 그앞에녀석들은 모두 하나의 조각이 되어 전체개수를 세는데 그것의 일부분이 된다. 그럼 전체 개수를 int sum;으로 놓고 레이저 앞의 녀석들 즉 레이저가 자르는 그 순간의 조각의 높이를 체크하여 그걸 더하면 되겠네?? -> 에러, 이유는? 봐바 높이가 있어, 근데 블록이 끝나는.. 2023. 1. 9. 수열 2559 c++ queue,vector,sort 시간초과에 걸렸던 문제였다. 처음 접근 vector a에 다 받아놓고 vector sum에 합을 넣어놓는다. -> 이중 for문을 써서 for(int i = 0; i < n - k; i ++){ arrsum = 0; for(int j = i; j < i + k; j++){ arrsum += a[i]; } sum.push_back(arrsum); } 이러고 밑에서 sort(sum.rbegin(), sum.rend()); 하고 sum[0] 을 출력하면 된다 그런데 시간초과!!!! 이유는? 이중배열.. 그럼 이중배열을 안쓰며 한큐에 해결할수 있는건? 바로바로 큐 를 이용하는것이다. 큐의 크기가 k 가 되기전까진 넣기만 하고 k일때부터 그들의 합을(합은 애초에 넣을때부터 누적해야한다 arrsum) vec.. 2023. 1. 8. 색종이 2563 c++ (이중배열 이용) 의문 : 어떻게 좌표들을 두개도아니고 여러개를 받아서 겹치는 부분을 계산할 수 있을까,,?? 한번만 겹친다는 전제가 있다면 vector pair써서 어떻게든하겠는데 그걸 알 수가 없잖아. 생각해보니 체크된걸 또 체크해도 변하지 않는게 있다. 바로바로 값을 초기화해주는것 ex 변수 p 값이 1인데 p = 1이라고 해봤자 불변. 그렇다면 도화지 사이즈는 100X100이고 이를 이중배열로 찍어보면 어떨까???? 좌표 점이랑 넓이랑 헷갈릴수도 있으니 좌표가 면을 가리킨다고 보면 안헷갈린다. 이렇게 arr을 101까지 한 이유는 100번째는 99로 표현되기에 101까지해야 배열 넘버가 100까지 존재한다. (헷갈리지않기위해 한것) 일단 좌하단꼭짓점만 좌표를 주니까 +10씩 해야한다. 그게 10~17.. 2023. 1. 3. 백준 단어뒤집기2 17413 c++(이중vector, tag기능) 고려해야할점이 태그는 온전하게 출력 태그가 아닌부분은 공백기준으로 reverse~ 우선 태그를 고려하지않고 하면 스택을 이용하면 돼서 간단하다. sstream으로 공백마다 스택에넣어주고 출력후 한칸 띄워주기! 하지만!! 저놈의 태그때문에 끵끵앓다가 떠올랐다 이중벡터. 왜 이중벡터를 이용했을까????? 우선 공백으로 문장을 쪼개는건 피치못할 일이다. 하지만 태그는 공백과 상관없는점. 그렇다면 쪼개기전에 태그별로 벡터에 넣어놓으면 되겠네???? 하지만 문자열을 하나씩확인해서 이거로 닫힐때까지가 태그이다. 그럼 < 열렸을때 int swt (스위치역할) 얘를 1로해주고 닫힐때 0으로해주며 스위치가 1일때 벡터에 쫙쫙쫙 넣어준다. 그럼 벡터에 넣어진녀석들은 사실 하나의 그룹인것이다. .. 2022. 12. 24. 이전 1 ··· 3 4 5 6 7 8 9 ··· 11 다음