백준 22862 가장 긴 짝수 연속한 부분 수열 (large) 풀이 (feat.JAVA & 슬라이딩 윈도우)
·
Study/Algorithm
슬라이딩 윈도우를 온전히 이해하고 풀었던 첫 문제물론 아이디어를 한번에 도출해내진 못했고 구현하고도 놓친 부분이 세개 있었지만...할수록 늘테니까 뭐...package Algorithm_2025;/*[백준]22862, 가장 긴 짝수 연속한 부분 수열 (large)[문제파악]길이가 N인 수열 S가 있다.수열 S는 1 이상인 정수로 이루어져 있다.수열 S에서 원하는 위치에 있는 수를 골라 최대 K번 삭제를 할 수 있다.예를 들어, 수열 S가 다음과 같이 구성되어 있다고 가정하자.수열 S : 1 2 3 4 5 6 7 8수열 S에서 4번째에 있는 4를 지운다고 하면 아래와 같다.수열 S : 1 2 3 5 6 7 8수열 S에서 최대 K번 원소를 삭제한 수열에서 짝수로 이루어져 있는 연속한 부분 수열 중 가장 긴 ..
백준 17244 아맞다우산 풀이 (feat. JAVA & 메모리 초과)
·
Study/Algorithm
순서 정해서 차근차근 풀면 풀만했던 문제근데 아이디어를 못 떠올렸음 핵심은 두가지1) BFS로 각 노드끼리의 최단 거리를 모두 구해둔다2) 순열로 조합을 구해서 해당 노드 순서대로 최소 거리를 구한다 내가 간과한 것은 두가지1) 챙겨야할 물건(=X)가 최대 5개라는 것은 '없을 수도 있다'는 것2) 방문처리는 Q에 집어넣을 때 해야 중복되는 것들이 Q에 또 들어가는 것을 방지할 수 있다는 것 간과한 2번이 메모리 초과의 원인이었다 (방문처리를 잘해야함)package Algorithm_2025;/*[백준]17244, 아맞다우산[문제파악]경재씨는 저녁 약속을 가기 전 챙기지 않은 물건들이 있는 지 확인하고 있다.필요한 물건은 전부 챙긴 것 같았고 외출 후 돌아오는 길에 경재씨는 외쳤다."아 맞다 우산!!!"..
백준 2469 사다리 타기 풀이 (feat. JAVA & 작게 나눠 생각하기)
·
Study/Algorithm
이 문제는 와 세상 어렵다!! 이 정도는 아니다근데 한번에 못 풀었음;; (처음엔 탐색 문제 아닌가? 이러면서 헤맸음..) 문제를 한번에 풀지 못한 이유는 크게 세가지1) 너무 어렵게 생각해서 (사실 자리 스왑만 하면 되는 문제다)2) 큰 문제를 작게 나눌줄 몰라서 (top-down, down-top 두 방향으로 ???가 있는 행까지 탐색하면 된다)3) 나누더라도 어떻게 나눠야할지 몰라서이다 알고리즘 풀다가 막혔거나, 어려웠거나, 찜찜하면 포스팅을 하곤하는데 오늘은 애매해서 포스팅을 남긴다경험의 부재인듯한데 이건 뭐 더 다양한 문제풀면 됨 ㅇㅇ뭐 어쩌겄어 가서 더 풀어package Algorithm_2025;/*[백준]2469, 사다리타기[문제파악]k명의 참가자들이 사다리 타기를 통하여 어떤 순서를 결정..
백준 13460 구슬 탈출 2 풀이 (feat. JAVA)
·
Study/Algorithm
아직 고난이도 구현 문제를 풀면 뒷심이 풀려버리는 이슈가 있다 ㅠ그리고 좀 더 치밀한 단계를 세워서 푸는 연습이 좀 더 필요함하나씩 놓쳐가지고 통과가 안된다이번의 경우엔 10회를 넘는 경우 -1을 출력해야하는데 이걸 깜빡해서 64%에서 계속 막힘../*[백준]13460, 구슬 탈출 2[문제파악]스타트링크에서 판매하는 어린이용 장난감 중에서 가장 인기가 많은 제품은 구슬 탈출이다.구슬 탈출은 직사각형 보드에 빨간 구슬과 파란 구슬을 하나씩 넣은 다음, 빨간 구슬을 구멍을 통해 빼내는 게임이다.보드의 세로 크기는 N, 가로 크기는 M이고, 편의상 1×1크기의 칸으로 나누어져 있다.가장 바깥 행과 열은 모두 막혀져 있고, 보드에는 구멍이 하나 있다.빨간 구슬과 파란 구슬의 크기는 보드에서 1×1크기의 칸을 가..
백준 1644 소수의 연속합 풀이 (feat. JAVA & 에라토스테네스의 체)
·
Study/Algorithm
애매하게 알아서 애매하게 어려웠던 문제에라토스테네스의 체로 소수를 구하고, 투포인터로 범위를 이동해가며 풀면되는 문제다다만 일반적인 투포인터 문제랑 살짝 다르게 모든 경우의 수를 다 찾아야하기 때문에 이동 방향이 고정이다start와 end 모두 왼쪽으로만 이동한다이 두가지 사실 모두 애매하게 알아서 애매하게 어려웠음...이해하고 보면 쉬운데... 다만 일반적으로 O(N^2)이 아닌 O(N log log N)가 걸리는 에라토스테네스의 체 공식은 외워둘법한 것 같다크게 어려울 것은 없고(?!), 그냥 한번 계산한 것들은 그 이후 배수들까지 미리 처리해버리면 된다(N = 1,000,000 기준으로 O(N^2)은 약 1조(10¹²)번 연산, O(N log log N)는 약 2천만(2×10⁷)번 연산으로 꽤 유의..
백준 2250 트리의 높이와 너비 풀이 (feat. JAVA & 중위순회)
·
Study/Algorithm
중위 순회 개념에 정확히 알고 있었다면 무리 없이 풀었을 문제아직 스스로의 알고리즘 개념 정리들이 100%가 아닌 점이 아쉽다개념들을 좀 더 내 것으로 체화해야할듯!package Algorithm_2025;/*[백준]2250, 트리의 높이와 너비[문제파악]이진트리를 다음의 규칙에 따라 행과 열에 번호가 붙어있는 격자 모양의 틀 속에 그리려고 한다.이때 다음의 규칙에 따라 그리려고 한다. 이진트리에서 같은 레벨(level)에 있는 노드는 같은 행에 위치한다. 한 열에는 한 노드만 존재한다. 임의의 노드의 왼쪽 부트리(left subtree)에 있는 노드들은 해당 노드보다 왼쪽의 열에 위치하고, 오른쪽 부트리(right subtree)에 있는 노드들은 해당 노드보다 오른쪽의 열에 위치한다. ..
백준 2573 빙산 풀이 (feat. JAVA, 시간 vs 메모리)
·
Study/Algorithm
시간과 메모리 중 무엇을 아낄 것인가 선택을 잘해야했던 문제처음엔 시간이 1초길래 모자랄 줄 알고 최대한 적게 탐색하기 위한 방법으로 진행했다Queue를 만들어서 빙산 좌표를 다 저장했는데 이게 패착이었음...애초에 N과 M이 최대치가 300이라서 완탐해도 9만에다가 빙하는 갈수록 줄어든다뭣보다 문제 조건 자체에서 '빙하의 갯수가 1만개 이하다'라고 명시해두었기에 완탐으로 해야 메모리를 터치지 않고 할 수 있다 ㅠ(그러니까 문제 똑바로 읽으라고)package Algorithm_2025;/*[백준]2573, 빙산[문제파악]지구 온난화로 인하여 북극의 빙산이 녹고 있다.빙산을 그림 1과 같이 2차원 배열에 표시한다고 하자.빙산의 각 부분별 높이 정보는 배열의 각 칸에 양의 정수로 저장된다.빙산 이외의 바다에..
백준 1043 거짓말 풀이 (feat. JAVA, Union-Find에 대한 고찰)
·
Study/Algorithm
Union-Find에 최적화된 문제Unoin-Find가 또 가물가물해서 이번엔 진짜 제대로 공부하고 외워버리고자 노력했다코드package Algorithm_2025;/*[백준]1043, 거짓말[문제파악]지민이는 파티에 가서 이야기 하는 것을 좋아한다.파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다.지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 과장해서 말한다.당연히 과장해서 이야기하는 것이 훨씬 더 재미있기 때문에, 되도록이면 과장해서 이야기하려고 한다.하지만, 지민이는 거짓말쟁이로 알려지기는 싫어한다.문제는 몇몇 사람들은 그 이야기의 진실을 안다는 것이다.따라서 이런 사람들이 파티에 왔을 때는, 지민이는 진실을 이야기할 수 밖에 없다.당연히, 어떤 사람이 어떤 ..
백준 14890 경사로 풀이 (feat. JAVA)
·
Study/Algorithm
이번 문제는 꼼꼼하게 로직을 짰어야 했는데 그러지 못해서 틀렸다중간에 row, col을 헷갈려버린 탓도 있음 ㅠ애초에 초기 코드는 그리 깔끔하지 못했던 것도 있어서 구현 문제는 좀 더 고민을 많이하고 촘촘히 짜야함을 체감했다package Algorithm_2025;/*[백준]14890, 경사로[문제파악]크기가 N×N인 지도가 있다. 지도의 각 칸에는 그 곳의 높이가 적혀져 있다.오늘은 이 지도에서 지나갈 수 있는 길이 몇 개 있는지 알아보려고 한다.길이란 한 행 또는 한 열 전부를 나타내며, 한쪽 끝에서 다른쪽 끝까지 지나가는 것이다.다음과 같은 N=6인 경우 지도를 살펴보자.이때, 길은 총 2N개가 있으며, 아래와 같다.길을 지나갈 수 있으려면 길에 속한 모든 칸의 높이가 모두 같아야 한다. 또는, 경..
백준 1019 책 페이지 풀이 (feat. JAVA)
·
Study/Algorithm
정-말 어려웠다내가 생각한건 구현하는 방식 -> 이것은 구현하는게 복잡했고수학식은 이해하는데 어려웠고...이거 이해하는데 하루 꼬박 쓴듯하다근데 아직 혼자 다시 풀라면... ㅠ 재도전하자...(일단 구현식으로 맞추고 수학식 풀이는 모르겠어서 10개쯤 살펴보고 제일 내 취향이었던 forin님 코드로 공부했다!!)풀이 고민/*[백준]1019, 책 페이지[문제파악]지민이는 전체 페이지의 수가 N인 책이 하나 있다.첫 페이지는 1 페이지이고, 마지막 페이지는 N 페이지이다.각 숫자가 전체 페이지 번호에서 모두 몇 번 나오는지 구해보자.[입력]첫째 줄에 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.[출력]첫째 줄에 0이 총 몇 번 나오는지, 1이 총 몇 번 나오는지, ..., 9가 총..