본문 바로가기

Java8

코드트리 - 마법의 숲 탐색 (Java) 코드트리의 삼성 코테 기출 문제인 "마법의 숲 탐색" 문제에 대한 풀이입니다. 코드트리 - 마법의 숲 탐색 블로그 목차 1. 원리 2. 코드추천글 원리 1. 골렘의 이동- 골렘은 이동하는데 우선 순위가 있다.1) 남쪽으로 한 칸 이동2) 서쪽으로 한 칸 이동 후 남쪽으로 한 칸 이동3) 동쪽으로 한 칸 이동 후 남쪽으로 한 칸 이동 - 나는 각 이동별로 함수를 만들었다.1) canMoveSouth()2) canMoveWestAndSouth()3) canMoveEastAndSouth() - while 문을 통해서 골렘은 이동할 수 없는 위치까지 이동하게 된다.- 이때, 위의 함수들은 골렘이 이동했는지 이동하지 않았는지 여부를 반환한다.- 만약, 세 가지 경우의 이동이 모두 불가능했다면 골렘은 그 자.. 2025. 4. 23.
코드트리 - 고대 문명 유적 탐사 (Java) 코드 트리에서 삼성 코테 기출 문제인 "고대 문명 유적 탐사" 문제에 대한 풀이입니다. 코드트리 - 고대 문명 유적 탐사 블로그 목차 1. 원리 2. 코드추천글 원리 - 좀 우려되는 부분이 있는데, 이런 구현 문제는 코드를 가지고 설명하는 것이 정말 힘들다.- 따라서 아이디어를 잘 공유하기 위해 애써야 하는데 워낙 조건이 많다보니 내가 누군가를 이해시킬 수 있을만큼 친절하게 쓸 수 있는지 모르겠다.- 또, 코드 트리에는 해설이 포함되어 있기 때문에 크게 의미가 없을 수도 있다. 1. 유적지 회전- 이 문제는 내가 처음으로 풀었던 삼성 기출 문제였다.- 물론 백준에서도 몇 가지를 풀었었는데, 항상 main() 함수에 모든 풀이를 다 넣었기 때문에 디버깅이 무척 어려웠다.- 나는 멋도 모르고 이 문제.. 2025. 4. 22.
백준 - 빌런 호석 22251 백준에서 "빌런 호석" 문제의 풀이를 담고 있습니다.  백준 - 빌런 호석 22251  블로그 목차  1. 원리 2. 코드추천글  원리 - 가장 단순한 방법으로는 모든 칸을 반전시키면서 체크를 하는 것인데 반전을 시켰지만 숫자가 만들어지지 않는 경우가 있을 것이기 때문에 불필요한 탐색을 많이 해야 한다.- 따라서, 나는 미리 숫자 i와 숫자 j 사이에 몇 개의 칸이 반전되어야 하는지를 행렬에 계산해 두었다.- 이 행렬이 matrix[][] 일 때, matrix[i][j]는 i에서 j로 바뀌기 위해서는 몇 개의 칸이 반전되어야 하는지를 의미한다.- 또, j에서 i로 만드는 것과 i에서 j로 만드는 것은 필요 반전 횟수가 같기 때문에 matrix 행렬은 대각선을 기준으로 대칭이 된다.- 마지막으로 i에서 i.. 2025. 3. 24.
백준 - 줄세우기 2631 백준에서 "줄세우기" 문제에 대한 풀이를 담고 있습니다.  백준 - 줄세우기 2631  블로그 목차  1. 코드 2. 원리추천글  코드 - 아무리 생각해도 풀이를 떠올리기가 힘들었고, 풀이를 찾다가 그 풀이에서 도입부분의 설명만 듣고 바로 이해를 해버렸다.- 정답률이 66%였는데, 코드가 어렵다기 보다는 그 아이디어를 찾는 것이 어려운 문제였다고 생각한다.- 일단 어떤 수들이 나열되어 있는데, 우리가 몇 개의 수를 옮겨서 적절하게 정리를 하려면 어떻게 움직일까? - 바로, 이미 정렬되어 있는 부분들은 제외하고, 나머지 부분들을 이동시켜서 정렬하게 될 것이다.- 이런 비슷한 생각을 떠올렸는데, 나는 무조건 다닥다닥 붙어있는 경우만을 생각해서 정답에 도달하지 못했다.- 예를 들어, 3, 7, 5, 2, 6,.. 2025. 3. 19.
[Legacy to Microservices] JPetStore-6 개선: CSRF 토큰을 JSP에 추가하기 최근에 면접에서 대차게 본 프로젝트에 대해서 설명하고 나서 실제로 꼼질꼼질 프로젝트를 잘 이어나가고 있다. 이전에서는 어려운 분산 트랜잭션에 대해서 개선하는 것을 보여줬었는데 이번 챕터에서는 초보자들도 가능한 CSRF 토큰을 추가하는 개선에 대해서 설명하고자 한다.  JPetStore-6 개선: CSRF 토큰을 JSP에 추가하기  블로그 목차  1. CSRF 토큰 추가하기추천글  CSRF 토큰 추가하기 - CSRF가 무엇인지는 취준 카테고리에서 "Web 관련 면접 준비" 라는 게시글에 설명되어 있다.- 현재 작업하고 있는 JPetStore-6가 세션 기반의 웹 앱이기 때문에 사용자에게 세션 ID를 쿠키로 발급하는데 이것때문에 CSRF 공격이 일어날 수 있다.- 따라서 이를 방지하기 위해 CSRF를 추가한.. 2025. 2. 16.
백준 - 도시 분할 계획 1647 MST 관련 문제를 찾아서 풀다가 어떤 알고리즘을 적용해야 되는지는 알겠는데 도저히 사이클의 여부를 확인할 수 있는 방법을 알지 못해서 많이 헤맸다. 그래서 기록을 남기기 위해 적게 되었다.  백준 - 도시 분할 계획  블로그 목차  1. 원리 2. 코드  원리 - 원리는 어떤 노드의 부모가 누군지를 기록하는 배열을 이용하는 것이다.- 예를 들어, (2, 3) 간선을 추가하는 과정이라면, 2의 부모 노드가 누구인지 3의 부모 노드가 누구인지를 찾아서 비교한다.- 만약 다르다면 서로 연결되어 있는 것이 아니기 때문에 (2, 3) 간선을 추가하면 되고, 부모 노드가 같다면 서로는 이미 연결되어 있기 때문에 간선을 추가할 수 없다.- 아! 위의 아이디어가 크루스칼 알고리즘에서 간선을 하나씩 추가할 때, 사이클.. 2025. 2. 9.
반응형