BOJ 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가 총..
백준 9097 동전게임 풀이 (feat. JAVA)
·
Study/Algorithm
이거는... 비트마스킹을 좀 자유자재로 다뤄야 이렇게 생각해서 풀 수 있지 않나.. 라는 생각을 했다진짜 너무 헷갈리고 쉽지 않은 문제였음... ㅠ어쩌면 2진수로 바꿔서 생각하는걸 너무 복잡하게 생각하는지도 모르겠다이 역시도 많이 풀어봐야할.. 문제인 것 같다/*[백준]9097, 동전게임[문제파악]상우는 재미있는 게임을 생각해냈다.동전 9개를 아래 그림과 같이 3행 3열로 놓는다.H는 앞면, T는 뒷면을 의미한다.H T TH T TT H H게임의 목적은 이 동전의 모양을 모두 같은 면(H나 T)이 보이도록 하는 것이다.단, 하나의 동전만을 뒤집을 수는 없고, 한 행의 모든 동전, 한 열의 모든 동전 또는 하나의 대각선 상의 모든 동전을 한 번에 뒤집어야 한다.그런 식으로 세 개의 동전을 뒤집는 것을 '한..
백준 16508 전공책 풀이 (feat. JAVA)
·
Study/Algorithm
이게... 비트마스킹으로 조합을 하겠다고 생각을 도출하는게 너무 어려웠다그냥 진짜 조합식 일일이 짜는 방식밖에 생각이 안났음 (근데 너무 비효율적이잖아;; 이 또한 죄다 하나 같이 안해봤으니까 모르는 것이겠죠풀 유형은 많습니다 ㅠ 급한 일 끝났으니 다시 꾸준히 합시다/*[백준]16508, 전공책[문제파악]곧 졸업을 앞둔 민호는 대학교 생활 동안 구매만 해놓고 한 번도 펴보지 않은 전공책에 먼지가 쌓여 있는 것을 보고는, 이 책들을 어떻게 처리해야 할지 고민 중이다.열심히 고민한 끝에 민호는 결국 전공책을 모두 버리기로 마음먹었다.하지만 그냥 버리기엔 심심한 민호는 전공책 제목에 있는 글자들을 오려서 단어 만들기 놀이를 하려고 한다.단어 만들기 놀이는 아래 예시와 같다.1번 책 : COMPUTERARCHI..