https://javajoha.tistory.com/ 알고리즘이 재미있다 javajoha.tistory.com 알고리즘을 좋아해서 매일 꾸준히 풀다보니 좋은 문제가 있으면 문제도 공유하고 싶다는 생각이 크게 들었습니다. 아이디어도 공유하고, 이를 작성하는 것에 재미를 느끼다보니 알고리즘 관련 글이 너무 많아졌다고 생각하였습니다. 또한 이를 분리하는 것이 다른 글을 보기에도 편하다고 생각하였습니다. 따라서 오늘부터 알고리즘 문제풀이 관련 글은 위의 블로그에서 작성하기로 결정하였습니다.
https://www.acmicpc.net/problem/14939 14939번: 불 끄기 전구 100개가 10×10 정사각형 모양으로 늘어서 있다. 전구에 달린 스위치를 누르면 그 전구와 위, 아래, 왼쪽, 오른쪽에 있는 전구의 상태도 바뀐다. 전구 100개의 상태가 주어지면 모든 전구를 끄 www.acmicpc.net 브루트포스로 풀 수 있는 문제이다. 플레 난이도답게 아이디어를 생각하기 어려운 문제였다. 핵심 스위치를 할 때마다 주변과 현재 위치의 상태가 변하게 된다. 즉 컨트롤하기 어렵다는 문제가 있다. 이를 생각해 보면 위쪽의 경우 아래에서 스위치를 하면 컨트롤할 수 있게 된다 -> 맨 아래는 컨트롤불가 따라서 맨 첫 줄의 모든 경우의 수를 생각하고, 마지막 줄 이전까지의 행을 원하는 대로 바꾼..
https://www.acmicpc.net/problem/9328 9328번: 열쇠 상근이는 1층 빌딩에 침입해 매우 중요한 문서를 훔쳐오려고 한다. 상근이가 가지고 있는 평면도에는 문서의 위치가 모두 나타나 있다. 빌딩의 문은 모두 잠겨있기 때문에, 문을 열려면 열쇠가 www.acmicpc.net 이번에도 bfs 문제이다. 이와 비슷한 문제를 리트 코드에서도 풀었던 기억이 있는데, 그에 비하면 쉽다고 생각한다. 이유는 최단 거리를 찾는 문제는 아니기에 정보를 공유할 수 있기 때문이다. 핵심 우선 최단거리를 찾는 문제가 아니라 찾을 수 있는 열쇠의 수를 찾는 것이다. 이전에 bfs 특성상 어떤 열쇠를 먼저 먹고, 어떤 식으로 이동해야 가장 빠르게 도달할 수 있는지를 찾는 문제라면 복잡해질 수 있다.(아래..
https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 조금 난도가 있는 bfs 문제이다. 핵심 중요하다고 생각하는 부분은 빨간 구슬과 파란 구슬이 움직일 때 둘의 위치에 따라 먼저 움직이는 순서가 달라져야 한다는 것이다. 만약.. RB가 있을 때 왼쪽으로 움직인다면 R -> B순으로 움직여야 한다. 정답 코드 import java.util.LinkedList; import java.util.Queue..
https://school.programmers.co.kr/learn/courses/30/lessons/17683 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 옛날에 풀려다가 문제를 이해를 못 해서 넘겼었던 문제이다. 오랜만에 다시 천천히 읽어보니 단순 구현문제였다. 핵심 요즘 문제를 풀 때 주석을 달고 분석을 시작하고 한다. 일단 내가 적은 주석이다. // 우선 문자를 구분해줘야함 C, C# 등등 -> 중요포인트라고 생각되는건 // C, C#, D, D#, E, F, F#, G, G#, A, A#, B 12개가 있음 #은 다른 문자로 대체하느게 좋아보..
https://leetcode.com/problems/knight-probability-in-chessboard/ Knight Probability in Chessboard - LeetCode Can you solve this real interview question? Knight Probability in Chessboard - On an n x n chessboard, a knight starts at the cell (row, column) and attempts to make exactly k moves. The rows and columns are 0-indexed, so the top-left cell is (0, 0), and t leetcode.com 오늘 문제는 dp를 이용한 문제이다...
https://leetcode.com/problems/maximize-the-confusion-of-an-exam/ Maximize the Confusion of an Exam - LeetCode Can you solve this real interview question? Maximize the Confusion of an Exam - A teacher is writing a test with n true/false questions, with 'T' denoting true and 'F' denoting false. He wants to confuse the students by maximizing the number of consecutive leetcode.com 오늘도 어제와 같은 윈도우 슬라이..
https://leetcode.com/problems/minimum-size-subarray-sum/ Minimum Size Subarray Sum - LeetCode Can you solve this real interview question? Minimum Size Subarray Sum - Given an array of positive integers nums and a positive integer target, return the minimal length of a subarray whose sum is greater than or equal to target. If there is no such subarr leetcode.com 전형적인 윈도우 슬라이딩 문제이다. 난이도가 높지 않고 매우 ..
https://leetcode.com/problems/maximum-number-of-achievable-transfer-requests/ Maximum Number of Achievable Transfer Requests - LeetCode Can you solve this real interview question? Maximum Number of Achievable Transfer Requests - We have n buildings numbered from 0 to n - 1. Each building has a number of employees. It's transfer season, and some employees want to change the building they re leetc..
https://leetcode.com/problems/shortest-path-to-get-all-keys/ Shortest Path to Get All Keys - LeetCode Can you solve this real interview question? Shortest Path to Get All Keys - You are given an m x n grid grid where: * '.' is an empty cell. * '#' is a wall. * '@' is the starting point. * Lowercase letters represent keys. * Uppercase letters represent lock leetcode.com 친구의 추천으로 리트코드 문제를 처음 풀어보았다..