[C++] 백준 2096번 : 내려가기
·
problem solving/백준
이 문제를 풀다가 메모리 제한 때문에 틀렸습니다를 경험했기 때문에, 저처럼 고뇌하시는 분들을 위해 이 글을 씁니다. 🙂 🔗 문제https://www.acmicpc.net/problem/2096  ✏️ 풀이 이 문제가 원하는 답은 2개다. 게임 결과의 최대, 최소이다.어떻게 하면 최대를 구할 수 있을까?어떻게 하면 최소를 구할 수 있을까?결론적으로, 최대값과 최소값을 구하는 점화식은 거의 동일합니다. 각 선택지마다 갈 수 있는 경로가 정해져 있기 때문에, 바로 직전의 위치만 비교하면 됩니다. 이렇게 최대값(max_dp)과 최소값(min_dp)을 갱신해 나가면 됩니다. (코드는 아래를 참고하세요.) for(int i=0; i 메모리 제한이 문제는 단순히 점화식을 짜는 것이지만, 골드 문제인 이유는 메모리..
[C++] 백준 17780번 : 새로운 게임
·
problem solving/백준
🔗 문제https://www.acmicpc.net/problem/17780 ✏️ 풀이문제 풀이는 구현.조건을 정리하려고 했으나 문제에서 친절히 알려주고 있어서 생략 하겠습니다. 이번에도 큰 틀을 아래처럼 잡고 세부 조건을 채워갔습니다.int getAnswer(){ int answer = 0; while(++answer > 1000) { for(int i=0; i 어떤 자료 구조를 사용했는지가 중요한 문제라고 생각합니다.이 문제는 상어 시리즈처럼 보이지만 상어와 달리 한 칸에 위치한 요소들의 순서도 필요하고, 0.5초라는 시간 제한에 문제 풀이상 빈번한 삽입/삭제 연산의 시간 복잡도가 중요하기 때문입니다. 맨 밑의 체스말만 이동할 수 있기 때문에 O(1)로 맨 밑의 요소가 무..
[JAVA] 백준 14621번 : 나만 안되는 연애
·
problem solving/백준
🔗 문제https://www.acmicpc.net/problem/14621   ✏️ 풀이문제를 풀기 위해선 어떤 조건으로 무엇을 구해야하는지 문제를 잘 봐야합니다!해당 문제는 설명에 어떤 알고리즘으로 풀어라 힌트를 주고 있습니다.   [문제 조건]사심 경로는 사용자들의 사심을 만족시키기 위해 남초 대학교와 여초 대학교들을 연결하는 도로로만 이루어져 있다.사용자들이 다양한 사람과 미팅할 수 있도록 어떤 대학교에서든 모든 대학교로 이동이 가능한 경로이다.시간을 낭비하지 않고 미팅할 수 있도록 이 경로의 길이는 최단 거리가 되어야 한다. 굵은 선으로 처리한 모든 조건들이 최소 신장 트리라고 외치고 있네요.대표적으로 프림, 크루스칼이 있지만 저는 프림이 잘 기억나지 않아 크루스칼로 풀었습니다.당연한 거지만 (..
[C++] 백준 2638번: 치즈
·
problem solving/백준
🔗 문제https://www.acmicpc.net/problem/2638 ✏️ 풀이 오랜만에 문제 정리  [상태]N x M 맵 (100 x 100)치즈 1공기 0[동작]치즈 녹이기조건 (1) 치즈와 상하좌우로 맞닿아있는 공기가 2개 이상일 경우에만 녹는다.조건 (2) 치즈로 둘러 쌓인 내부의 공기는 치즈를 녹일 수 없다 - 문제 그림 참고간단하게 생각해낸 큰 틀은 아래와 같다.while(totalCheese) // 모든 치즈가 녹을 때까지{ ++answer; // 걸린 시간 melt() // 치즈를 녹여보자.} 일단 "한 칸"씩 치즈가 녹으니 BFS가 적합한 알고리즘이라고 판단했다.이제 세부조건 맞춰주기 전에 생각을 해보자.맵의 상태가 2개이기 때문에 queue에 넣을 수 있는 것도 2개다...
git 자동으로 깃모지 다는 방법
·
programming
https://gitmoji.dev/ gitmoji:truck: Move or rename resources (e.g.: files, paths, routes).gitmoji.dev[gitmoji 공식 사이트]  설치 방법npm i -g gitmoji-cli orbrew install gitmoji  설치확인 및 도움말설치 됐나 겸사겸사 도움을 말을 켜보자gitmoji --help 어쩌고 저쩌고 뜨면 설치가 잘 된 것이다.   사용 방법gitmoji -c  add, fix 등 자주 사용하는 컨벤션을 작성하면 아래에 추천 리스트가 있어서 편하게 쓸 수 있다  feat를 치면 우리의 암묵적 룰인 이모지 ✨가 바로 뜬다.  선택해서 원하는 타이틀과 메세지를 작성하면 완료!   ➕  VScode 유저라면 마켓플..
📕 객체지향의 사실과 오해 : 역할, 책임, 협력 관점에서 본 객체지향
·
programming/환경설정 및 팁
리뷰💡 이제 객체 지향을 설명할 수 있나요? No💡 이제 객체 지향이 무엇인지 알겠나요? Yes면접에서 객체지향이 무엇인가요? 라는 질문이 들어왔을 때 답변할 만한 명쾌한 이야기는 책에 없다.애초에 책 설명이 엄청 길고 반복되기 때문에 내가 딱 정의할 수 힘든 부분도 있다.그런데 관점을 설명하는 건 생각만 해도 힘든 과정 아닌가? 저자가 정말 최선을 다해 비유하고 은유해서 떠먹여주고 있기 때문에 마음을 열고 보면 분명 깨닫는 점이 생긴다! 객체지향이 뭔지 잘 모르겠어서 혼자 고민하고 있는 사람에게 추천하고 싶다.객체, 클래스에 대한 객체지향적 관점으로 어떻게 이해해야 하는지 바로 잡아주는 느낌이었다.객체지향이 무엇인지 개념적으로, 철학적으로 이해하기엔 좋은 책이라고 말할 수 있다.그러나 코딩 책은 아..
[RUST] 백준 10871번 : X보다 작은 수
·
problem solving/백준
https://www.acmicpc.net/problem/10871 10871번: X보다 작은 수첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.www.acmicpc.net 그냥 러스트 연습용으로 한번 풀어봤다. 러스트 입출력이 너무 힘들어서 사용자의 입력을 받는 용도로 쓰는 건 아닌 것 같다.코드도 길고 알고리즘에서는 C++보다 매력있는 언어는 확실히 아닌 듯  절대로 내가 여러줄에 걸친 입력을 받다가 빡친게 아니고 .. 절대로..   use std::io::{self, Write};fn main() { let mut input = String::..
[JAVA] 백준 16946번: 벽 부수고 이동하기 4 (boolean과 hashset)
·
problem solving/백준
🔗 문제16946번: 벽 부수고 이동하기 4 16946번: 벽 부수고 이동하기 4N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 한 칸에서 다른 칸으로 이동하려면, 두 칸이 인접해야 한다. 두 칸이www.acmicpc.net ✏️ 풀이맵에 저장되는 상태는 WALL, EMPTY로 2가지이다.WALL는 부술 수 있는 대상으로 WALL 위치 포함해서 갈 수 있는 주변 EMPTY의 개수가 필요하다. > EMPTY 그룹핑WALL마다 BFS 돌리면 당연히 시간초과다.미리 이중포문으로 맵을 돌면서 EMPTY을 그룹핑해주었다.순회하며 만난 순으로 group_idx를 주었고, 기존 map에다가 -group..
[Javs SE 8] Function<T, R> 과 apply()
·
programming/개념 정리
Function 과 apply() T : input type R : return type background 기본적으로 자바는 타입이 ‘기본형’과 ‘객체형’이 있다. 그냥 기본형이 아닌건 다 객체다. 📌 기본형 (Primitive Type) - 논리 : boolean - 문자 : char - 정수 : byte, short, int, long - 실수 : float, double 함수가 객체라면 다른 객체들처럼 컨테이너에 저장할 수 있어야 하는게 아닐까? 그런데 클래스 안에서 선언하는거 이외에 함수를 객체로써 사용을 하시나요? C++에서는 함수 객체 개념을 위해 std::function, std::find가 있는데 Java는 어떨까?! Function (java.util.function) Function ..
[JAVA] 백준 12851번: 숨바꼭질 2
·
problem solving/백준
🔗 문제 12851번: 숨바꼭질 2 12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 이 문제는 전에 풀었던 숨바꼭질, 이모티콘이랑 유사하다. 다른 점이 있다면 최소 연산 횟수 뿐만 아니라 이 조건을 만족하는 ‘경우의 수’도 포함하여 출력해야 한다. ✏️ 풀이 기본접근법은 소개했던 문제들은 특정 알고리즘을 떠올려야 하는게 키 포인트였다면, 이 문제는 더 나아가 경우의 수를 어떻게 포함할지 고민하는게 포인트다. ((스포)) 이 문제는 BFS로 풀어야 하며, queue에 있던 원..