반응형
백준 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..
백준 17419 비트가 넘쳐흘러 풀이 (feat. JAVA)
·
Study/Algorithm
비트... 연산... 어렵다잉?2진수를 이렇게 또 다시 마주할 줄이야package Record_2025;/*[백준][문제파악]DJ욱제는 비트에 심취한 나머지, 비트를 비틀어 제껴버리는 문제를 내 버렸다!N자리 이진수 K가 주어진다.K가 0이 아닐 때까지 아래의 연산을 적용했을 때, 연산이 일어나는 횟수를 구하시오.K = K-(K&((~K)+1))아래는 위의 연산에 사용된 연산자에 대한 설명이다.'+'는 산술 더하기 연산이다. (5 + 2 = 7)'-'는 산술 빼기 연산이다. (5 - 2 = 3)'&'는 비트 AND 연산이다. (1101 & 0111 = 0101)'~'는 비트 NOT 연산이다. 켜진 비트를 끄고, 꺼진 비트를 켜는 연산이다. (~1101 = 0010)[입력]첫째 줄에 N이 주어진다.둘째 줄..
백준 2885 초콜릿 식사 풀이 (feat. JAVA)
·
Study/Algorithm
비트마스킹 친해지기 어렵다...어떻게 써먹어야할지 쓰면서도 헷갈림더 자주 풀어서 더 친해져야지 뭐 ㅠpackage Record_2025;/*[백준]2885, 초콜릿 식사[문제파악]- 학교 근처 편의점에 새 초콜릿이 들어왔다.- 이 초콜릿은 막대 모양이고, 각 막대는 정사각형 N개로 이루어져 있다.- 초콜릿의 크기(정사각형의 개수)는 항상 2의 제곱 형태이다.- 즉, 1, 2, 4, 8, 16, ...개의 정사각형으로 이루어져 있다.- 상근이는 점심식사로 초콜릿을 먹는다.- 이때, 적어도 K개 정사각형을 먹어야 남은 수업을 졸지 않고 버틸 수 있다.- 상근이의 친구 선영이도 초콜릿을 좋아한다.- 선영이는 초콜릿은 돈을 주고 사기 아깝다고 생각하기 때문에, 상근이가 주는 초콜릿만 먹는다.- 상근이는 막대 초..
백준 17182 우주 탐사선 풀이 (feat. JAVA)
·
Study/Algorithm
어렵다...언제쯤 골드 문제들은 답 참고 안하고 슈슈슉 다 풀어버릴 수 있을지요즘은 비트마스킹 문제에 익숙해지고자 이것만 풀고 있는데 쉽지 않다원리만 이해하고 문제에 적용하기 어려운게 확실히 알고리즘은 수학 문제 푸는 것과 똑같은 것 같다계속 풀면 언젠간 되긴 하긴하더만 ㅇㅅㅇ.. 아무튼 오늘은 비트마스킹 문제긴한데 여러가지를 다 조합해서 써야하는 문제다플로이드-워셜 + DFS + 비트마스킹 조합임...이 극악무도한 것...package Record_2025;/*[백준]17182, 우주 탐사선[문제파악]- 우주 탐사선 ana호는 어떤 행성계를 탐사하기 위해 발사된다.- 모든 행성을 탐사하는데 걸리는 최소 시간을 계산하려 한다.- 입력으로는 ana호가 탐색할 행성의 개수와 ana호가 발사되는 행성의 위치와..
백준 2014 소수의 곱 풀이 (feat. JAVA & C#)
·
Study/Algorithm
골드 상위권 문제는 늘 이런 식이다...쉬운듯 하면서 함정을 파놓지이 문제는 PQ문제다근데 곱셈의 중복처리를 해줘야하니까? HashSet도 필요하고...2 x 3과 3 x 2는 같으니까? 미리 가지치기(예외처리)도 필요한...그런 몹쓸 문제 되시겠다 아래는 내가 제일 헷갈렸던 포인트를 줄줄줄 설명하듯 적어놨음더보기이게 뭐냐고! 대체 뭐냐고!! // 중복 제거: 오름차순 생성만 허용if (curr % nums[j] == 0) break;뭘까 진짜... 수십번을 생각했더랬다근데 도저히 모르겠음이 날은 도저히 모르겠음을 인정하고 하루 방치해뒀다실제로 더 이상 머리가 굴러가지 않는 문제는?하루를 냅두고 숙성시켰다가 다음날 꺼내보면 무의식이 이해를 해두는 경우도 종종 있다- 의사쌤 유튭채널 오피셜 말씀이었음 아무..
백준 1976 여행 가자 풀이 (feat. JAVA)
·
Study/Algorithm
Union-Find 문제예전에, 1년 전? 이 유형에서 도망가서 그 때 실패했던 문제 오늘 다시 도전했다근데 Union-Find 그 때 공부 안해서 여전히 못 풀더라 ㅋㅋ ㅠ이제는? 도망갈 곳이 없다~대충 방식은 이해했다서로 연결된 친구들은 root에 해당하는 노드를 하나 만든다그리고 서로 연결되어있다 치면, 같은 그룹이다 아니다를 빠르게 체크하기 위해 root(대표 노드) 하나로 모두 연결시킨다그리고 서로 같은 그룹에 있는지를 체크하면 되는 문제!말로는 쉽다 말로는... 이것도 꾸준히 복습하면서 Union-Find를 내 것으로 만들어야 할 듯 ㅠ 구현방법- 연결된 노드들은 같은 그룹으로 묶인다. - 각 노드는 하나의 대표 노드(루트)를 가리킨다. - 두 노드가 연결되어 있는지 빠르게 판단하려면 각 노드..
백준 12919 A와 B 2 풀이 (feat. JAVA)
·
Study/Algorithm
StringBulider의 compareTos는 JAVA 9에서부터 만들어졌다는 것조건 순서를 의심해보면 그리디로 풀 수 없었다는 것두가지를 간과했던 문제package Record_2025;/*[백준]12919, A와 B 2[문제파악]- 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다.- 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다.- 이런 사실에 놀란 수빈이는 간단한 게임을 만들기로 했다.- 두 문자열 S와 T가 주어졌을 때, S를 T로 바꾸는 게임이다.- 문자열을 바꿀 때는 다음과 같은 두 가지 연산만 가능하다.- 문자열의 뒤에 A를 추가한다.- 문자열의 뒤에 B를 추가하고 문자열을 뒤집는다..
백준 1701 Cubeditor 풀이 (feat. JAVA / 돔황챠)
·
Study/Algorithm
과거의 나는 보아라그래 백번 양보해서 알고리즘 분류 KMP를 보고 '이건 뭐지' 싶어서 도망 안 갔을 수는 있다그래도 KMP 타고 들어가서 문제 난이도 봤을 땐 도망갔었어야지...(여러분도 그때 도망 못 가셨으니까 여기까지 오셨겠죠? ㅋㅋㅋㅋ 하 ㅠㅠ) 너무 어려웠다이건 답을 다봤다봐도 모르겠다심지어 0.5초? 양심있냐? 이걸 코테로 내는 곳은 없겠지이정도 알고리즘은 앞으로 AI가 짜주지 않을까?진짜 뭐하는 알고리즘인지 모르겠다진짜 이걸 내가 나중에 다시 풀까..? 싶긴 하지만 너무 어려웠으니까 공부 차원에서 포스팅해둔다..(코드를 다시봐도 뭐라는거야 싶네..)코드package Record_2025;/*[백준]1701, Cubeditor[문제파악]- Cubelover는 프로그래밍 언어 Whitespace..
백준 1135 뉴스 전하기 풀이 (feat. JAVA)
·
Study/Algorithm
트리에서도 DP가 가능하다니 악랄하다!!! 이거 놓쳤던 부분이자 가장 큰 포인트가 하나 있다전화를 한번에 한명 밖에 못 걸어서, 부하가 가장 많은 직원한테 먼저 걸어야 한다는 것! 즉 이 문제의 요는 루트 노드에서 시작하지만 DFS로 탐색해 들어가면 리프 노드에서 시작하는 셈이다그러면 밑바닥에 있는 가장 마지막 노드들(리프 노드)는 걸린시간이 0이다그러면 이제 리프 노드의 부모 입장에서 자식들이 몇명인지, 한번씩 전화를 돌리면 몇 분이 걸리는지를 체크한다이런 식으로 Bottom-Up으로 탐색해가면 루트 입장에선 각 자식들이 몇 분씩 걸리는지 알 수 있다 다만 여기서 한가지 함정이 있다면 그것은 가장 오래 걸리는 자식부터 계산을 해주어야한다는 것이다전화는 한번에 한명밖에 걸 수 없으니 자식이 많은 가지부터..
백준 14426 접두사 찾기 풀이 (feat. JAVA)
·
Study/Algorithm
아... Trie 진짜 저번에도 쓴맛을 봤었던 친구다이거는 그냥 원리는 단순하다 단어가 있으면 철자별로 분리해서 트리 구조로 만드는 것이다근데 이제 구현하는 방식이 효율적으로 정해져있는 그런 친구이다원리는 이해했으니까 이런 것은 구조는 암기하는게 속편하다..요 며칠간 잊을만하면 다시 써보고 보면서 외워봅시다... (망각곡선 OMG)package Record_2025;/*[백준]14426, 접두사 찾기[문제파악]- 문자열 S의 접두사란 S의 가장 앞에서부터 부분 문자열을 의미한다.- 예를 들어, S = "codeplus"의 접두사는 "code", "co", "codepl", "codeplus"가 있고, "plus", "s", "cude", "crud"는 접두사가 아니다.- 총 N개의 문자열로 이루어진 집..
백준 3079 입국심사 풀이 (feat. JAVA)
·
Study/Algorithm
이것도 너무 어렵게만 생각했다내가 30분 넘게 문제 구현방법에 대해서만 고민했는데, 내가 묶여있던 곳은 비어있는 B심사관을 패스하고, 1초 기다렸다가 A심사관에게 받겠다는 판단 요소를 처리할 방법 지점이었다근데 도저히 모르겠어서 참고했는데, 확인해보니 이것은 고려할 필요 자체가 없었다 그 사유는 그냥 심사대 입장에서, 최대 처리량을 미리 계산해두면 되는 것이다N초 동안 모든 심사대가 최대로 처리할 수 있는 인원 수를 계산해두면, 현재 인풋인 N명을 처리할 수 있는지 어쩐지 결과가 나온다그 최댓값 안에만 들어가면 된다는 소리...그도 그럴 것이 아래와 같은 상황을 생각해보면 된다[3초 걸리는 심사대][6초 걸리는 심사대]있다고 할 때 5명, 9초를 준다면?총 4명을 처리할 수 있다근데 이건 그냥 6초 걸리..
백준 17266 어두운 굴다리 풀이 (feat. JAVA)
·
Study/Algorithm
2주 가까운 시간동안 이분탐색만 풀었는데 이거 하나는 확실하게 가져가게 도와준 문제while (left while (left 모든 가로등 좌표마다 어떻게 계산하나 싶었는데 현 좌표 기준으로 밝힐 수 있는 거리를 -, + 해가지고 밝히는 것이 이 문제의 핵심이었다/*[백준]17266, 어두운 굴다리[문제파악]- 인하대학교 후문 뒤쪽에는 어두운 굴다리가 있다.- 겁쟁이 상빈이는 길이 조금이라도 어둡다면 가지 않는다.- 따라서 굴다리로 가면 최단거리로 집까지 갈수 있지만, 굴다리는 어둡기 때문에 빙빙 돌아서 집으로 간다.- 안타깝게 여긴 인식이는 굴다리 모든 길 0~N을 밝히게 가로등을 설치해 달라고 인천광역시에 민원을 넣었다.- 인천광역시에서 가로등을 설치할 개수 M과 각 가로등의 위치 x들의 결정을 끝냈다..
백준 12738 가장 긴 증가하는 부분 수열 3 풀이 (feat. JAVA)
·
Study/Algorithm
아.. 이분 탐색 기억 날아가기 전에 다진다고 시도한건데 또 틀림 ㅋㅋ이전에 미적지근하게 알고 있었나부다...이번엔 궁금한거 다 파고들면서 공부해씀package Record_2025;/*[백준]12738, 가장 긴 증가하는 부분 수열 3[문제파악]- 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.- 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다.[입력]- 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다.- 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,..
백준 12015 가장 긴 증가하는 부분 수열 2 풀이 (feat. JAVA)
·
Study/Algorithm
처음으로...개념 방향 확인만 하고 스스로 풀어낸 첫 이분탐색 ㅠ (따흐흑)아 이분 탐색 범위 잡는거 이거 진짜 헷갈린다while (left 근데 사실 그렇게 어려울게 없는게 그냥 종료조건이 무엇이냐를 잘 생각해보면 되는데 참... 이게 어렵다괜찮아 모르면 알 때까지 풀면 되지.. 이분탐색 더 풀면 된다../*[백준]12015, 가장 긴 증가하는 부분 수열 2[문제파악]- 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.- 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다.[입력]- 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,00..
반응형