본문 바로가기

일반 학습69

[프로그래머스] 올바른 괄호 처리순서 더보기 https://programmers.co.kr/learn/courses/30/lessons/12909 풀이 문자열s가 )로 시작하면 바로 닫아버린거기 때문에 false를 리턴하고 아니라면 s길이만큼 for문을 돌리게 된다. '('의 갯수와 ')'의 갯수를 헤아리면서 특정 변수에 카운트해주고 '('일때는 변수에 +1를 해주고 ')'일때는 -1를 해주게 되며 만약 시작변수값 0이 음수가 되면 ')'이 더 많아졌다는 것이므로 올바른 괄호가 아니게 된다. 이때는 false를 리턴해주면 된다. 만약 s길이를 다돌고 끝나게 되면 변수값이 0이어야 올바른괄호다 '('와 ')' 갯수가 일치한다는 것이다. 이전에 괄호 계산하는 문제보다 훨씬 쉬웠으나 복잡하게 생각했다. ')'가 처음나오면 그앞에 '('가.. 2022. 5. 2.
[프로그래머스] 가장 큰 정사각형 찾기 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/12905 풀이 y축은 board의 길이가 될 것이고 x축은 board[0]의 길이가 될 것이다. 만약 이 두개의 길이중 하나라도 2보다 작다면 최대 만들수 있는 정사각형은 1x1일 것이다. 또한 정사각형 크기는 1x1 2x2 3x3 으로 커진다는 것을 잘 기억하고 아래 그림을 확인해보자. 그림 처럼 1x1보다 큰 정사각형을 만드는 2x2부터 확인해야하므로 빨간색 1을 기준으로 왼쪽 왼쪽대각 위쪽의 숫자를 검사해서 모두가 1일때 2x2를 만들수 있고 2x2를 만들때마다 이를 자신빨간색기준 1이 2x2를 만들수 있는 값이라는 것을 기억시켜준다. 이후에 더 큰 3x3도 만들수 있는지 확인해볼 것이기 때.. 2022. 5. 2.
[프로그래머스] 방문 길이 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/49994 풀이 기준 좌표를 [0,0]으로 잡고 전체 좌표 크기는 5X5이므로 현재 좌표에서 X,Y로 U,D,L,R에 따라 좌우상하로 1씩움직일때 좌표값 X,Y중 -5이상이며 5이하이어야한다. 만약 UDLR에 따라 움직인 좌표가 -5미만 5초과일 시 해당 명령어는 무시하게 된다. 또한 한번 이동한 구간, 예를 들어 [0,0]에서 [1,0]으로 이동하고 다시 [0,0]으로 이동하면 해당 구간은 서로간에 갔다,왔다 모두 간적 있는 거리라는 것 쉽게 생각하면 우리집에서 홈플러스 까지 동일한 길을 사용해서 갔다. 그럼 홈플러스에서 우리집까지도 동일한 길로 왔다는 가정하에 난 그 길을 가본적이 있다는 것이다.. 2022. 5. 2.
[프로그래머스] 스킬트리 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/49993 풀이 skill을 split하여 선행 스킬 순서를하나하나 쪼개어 배열로 만들어준다. 또한 skill_trees도 for문을 돌며 하나의 스킬트리 원소마다 올바른 순서인지 확인할 것이기 때문에 이것도 한 스킬트리원소를 순회할 때 마다 split으로 쪼개줄것이다. 배열의 교집합을 사용하면 편할 것 같다고 생각했다. 또한 조건도 잘봐야한다. 스킬은 중복해서 주어지지 않으며 선행스킬순서가 CBD라면 스킬트리요소는 BD로 C가없어도 순서대로 이어지니 문제없는 스킬트리요소이다. 스킬이 CBD이고 스킬트리요소가 BACDE일때 교집합을 스킬트리요소 기준으로 구하면 스킬트리요소에서 선행스킬 순서에 상관없.. 2022. 5. 1.
[프로그래머스] n^2 배열 자르기 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/87390 풀이 처음에는 주먹구구식방법으로 입력값 n만큼 일차원배열을 가진 이차원배열을 만들고 해당 일차원 배열마다 내부에 1~n만큼 가득채웠다. 그후 이중 for문을 돌면서 완전한 2차원배열을 만들고 1차원배열로 분해해 모두를 concat한 뒤 slice로 letf부터 right까지 짤라서 리턴하려고 했다. 이렇게 1~n까지 들어간 이차원 배열을 만들고 노란색부분만 아래처럼 for문을 돌려 바꿔준뒤 완전한 이차원 배열을 만들고자했다. function solution(n, left, right) { const answer = new Array(n).fill().map((_, index) => { r.. 2022. 4. 30.
[프로그래머스] 점프와 순간 이동 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/12980 풀이 우선 처리조건을 잘 이해하며 규칙성을 잘 찾아야한다. 1칸씩 이동할 때마다 1개의 배터리를 소모하고 x2씩 점프할 때는 배터리를 소모하지않으며 입력값과 정확히 같아져야한다. 입력값 5000을 기준으로 최소한의 건전지 사용을 구해보자 쉽게 생각해보면 1칸씩 이동할 때는 배터리를 소모하므로 최대한 이 1칸씩 이동하는 행위는 줄이고, 2칸씩 점프하는건 멀리이동할 수 있으면서 배터리소모가 없으니 최대한 많이 이 행위를 해야할 것이다. 그렇다면 5000을 어떻게 이 1칸이동을 최소화하고 2칸이동을 최대화할까? 5000을 2로 나눠가면서 홀수가 나오면 -1를 빼주며 부득이하게 1칸이동을 해주며.. 2022. 4. 29.