이 문제는 문제 조건을 천천히 잘 읽고 조건문을 사용하여 문제를 해결하는 것이다.정규식을 사용하면 코드가 매우 간결해진다. 정규식에 대해서 한번 공부해 볼 필요가 있을 것 같다.이번 풀이 방법은 조건문을 활용한 풀이이다.조건 1번에 맞게 모든 문자열을 소문자로 변형한다
\*\*입출력 예 문제 예시와 같습니다.\*\*입출력 예 명함들을 적절히 회전시켜 겹쳤을 때, 3번째 명함(가로: 8, 세로: 15)이 다른 모든 명함보다 크기가 큽니다. 따라서 지갑의 크기는 3번째 명함의 크기와 같으며, 120(=8 x 15)을 return 합니다.
문제 링크 문제 설명 두 정수 X, Y의 임의의 자리에서 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 합니다(단, 공통으로 나타나는 정수 중 서로 짝지을 수 있는 숫자만 사용합니다). X, Y의 짝꿍이 존
문제 링크 \*\*입출력 예 \*\*입출력 예 문자열의 순서가 핵심인 문제이다.배열의 순서를 차례대로 비교하기 위해서 선입선출 자료구조인 Queue 를 활용하여 풀이 하였다.card1 첫번째 값과 goal 의 첫번째 값을 비교하면 같다는 것을 알수 있다.card1 의
문제 링크 문제 첫 문구에서 2016년 1월 1일은 금요일입니다. 를 주어주면서 이것을 바탕으로 계산을 해라! 는 의미 인것 같았다.하지만 간단한 함수를 통해서 구할 수 있어서 이것을 통해 풀이를 하였다.Java 8 이후에서는,날짜를 표현하기 위해 java.time.L
문제 링크 \*\*예제 \*\*예제 이 문제의 핵심은 티켓을 모두 탐색했을 때의 경로를 구하는 것이다.이때 경로가 여러가지면 사전 순으로 빠른 경로를 출력하는 해야한다.티켓의 출발지가 같으면 도착지 기준으로 정렬을 하기 위해서 별도의 클래스를 만들었다.티켓들을 탐색하면
문제 링크 이 문제는 우선순위 큐의 특징을 이용하면 쉽게 풀리는 문제이다.우선순위 큐는 별다른 정렬 기준을 정해주지 않으면 작은 수에서 큰수로 정렬되는 오름차순 정렬방식이다.또한 우선순위 큐도 큐의 성질을 가지고 있기 때문에 앞에 있는 값이 먼저 출력이 되는 FIFO
문제 링크 s="banana"인 경우 ba - na - na와 같이 분해됩니다.s="abracadabra"인 경우 ab - ra - ca - da - br - a와 같이 분해됩니다.s="aaabbaccccabba"인 경우 aaabbacc - ccab - ba와 같이 분
비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했
문제 링크 HashMap 을 사용하면 간단하게 해결 되는 문제이다.우선 주어진 인물 이름과 추억 점수를 매칭 시켜줘야한다.매칭 작업은 간단하게 HashMap 을 사용하였다.그 다음은 모든 값들을 비교하여 HashMap 에 해당 key 가 있으면 value 를 꺼내어 더
문제 링크 본문 내용과 일치합니다.skip 해야 될 문자열을 처리하는 방법이 이 문제의 핵심이다.이 문제를 단순하게 list 에 알파벳을 전부 넣어 두고 skip 에 해당 되는 문자들을 제거 한 뒤 문제를 해결하였다.다행히 이 문제에서는 skip 에 해당 되는 문자열이
문제 링크 1️⃣ 알파벳을 HashMap 을 통하여 문자와 index 를 넣어 준다. 이때 ArrayList 을 이용하여 list 의 index 를 이용해도 되지만 HashMap 을 사용하였을때 속도가 향상 된다.2️⃣ 문자열 하나씩 잘라서 HashMap 에 있는지 확
문제 링크 생각보다 단순하게 이 문제를 접근해서 풀었다.일부 숫자를 미리 주어진 진법으로 바꾼 후 거기서 플레이어에 해당 되는 숫자만 필터링하였다.효율성 검사가 있었으면 실패가 떴을 것 같은데, 정확성 검사만 있어서 모두 통과 되었다.Integer.toString(i,
문제 링크 문제의 예시와 같습니다.이 문제는 stack 을 이용하면 매우 간단하게 풀이 되는 문제이다.문자열이 ( 일 때는 stack 에 넣어 주고 ) 일 때는 비교를 하면 된다.여기서 비교는 ( 가 있는지만 확인 하면 된다. 스택에 현재 문자열이 ) 이고 스택에 값이
문제 링크 문제 예시와 같습니다.110011을 10진수로 바꾸면 110011입니다. 여기서 찾을 수 있는 조건에 맞는 소수는 11, 11 2개입니다. 이와 같이, 중복되는 소수를 발견하더라도 모두 따로 세어야 합니다.이 문제를 보고 제일 처음 들었던 생각은 K 진법으로
문제 링크 처음에 이 문제를 보고 당황했었다.Hashmap 으로 한번에 해결이 가능 할거라고 생각했지만 HashMap 을 이용하면 장르가 한개만 저장이 되어 여러단계를 거쳐야 문제가 해결이 될것 같았다.제일 플레이가 많이된 장르를 찾는다.장르별로 분리한 뒤 play 순
문제 링크 이 문제는 예시만 보고 풀이 했다가 삽질을 엄청 했던 문제였다.skill 은 1 ~ 26 길이가 될 수 있다는 것에 유의 해야한다.(역시 문제를 잘 읽어야 한다는 깨달음을 얻었다.)skill_trees 에서 skill 이 아닌 문자열을 모두 제거하였다.제거된
문제 링크 이 문제는 해시를 이용하면 쉽게 해결 할 수 있는 문제였다.keymap 에 있는 문자의 index 를 모두 HashMap 에 넣어 준다.단 HashMap 에 해당 문자가 이미 있다면 index 가 더 작은 것으로 넣어 준다.예를 들어서 예제 1번과 같이 ke
문제 링크 이문제의 핵심 포인트는 배열을 나눈다는 점이다.재귀방법으로 문제를 풀이 한다.배열을 쪼갠다.탐색할 배열 시작 범위의 x, y 좌표와 크기를 변수로 넘긴다.나눠진 사각형에서 값을 확인 한다.처음에 문제를 접했을 때 재귀방법으로 접근해야한다는 점은 바로 알았지만
문제 링크 위의 예시와 같습니다.| 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1로 가장 큰 정사각형의 넓이는 4가 되므로 4를 return합니다.이 문제는 DP 방법으로 문제를 해결해야한다.배열을 탐색하면서 값이 1일 때 해당 위치에서 가로, 세로, 대각선의
문제 링크 투포인터, 슬라이딩의 개념을 알고 있다면 쉽게 해결 할 수 있는 문제이다.K 보다 합이 작다면 right 값을 sum 에 더한다음 right 를 한칸 뒤로 이동한다.K 보다 합이 크다면 left 값을 sum 에서 뺀 다음 left 를 한칸 뒤로 이동한다.K
문제 설명 준호는 요즘 디펜스 게임에 푹 빠져 있습니다. 디펜스 게임은 준호가 보유한 병사 n명으로 연속되는 적의 공격을 순서대로 막는 게임입니다. 디펜스 게임은 다음과 같은 규칙으로 진행됩니다. 준호는 처음에 병사 n명을 가지고 있습니다. 매 라운드마다 enemy
문제 링크 문제를 보자마자 바로 이 문제는 hashmap을 이용해서 풀어야하는 문제라고 생각했다.Hashmap을 이용해서 왼쪽과 오른쪽을 나눠 각각의 hashmap의 크기가 동일하면 공평하게 롤케이크를 자른 것이다.롤케이크 자를 위치를 반복문을 통해서 정한 다음 이동한
문제 링크 문자열로 된 시간을 분으로 변경한다. 이때 종료 시간에는 청소 시간 10분을 포함하여 저장한다.예약 시간이 빠른 순으로 배열을 정리하며, 예약 시간이 같을 경우 종료 시간을 기준으로 정렬한다.우선순위큐를 이용하여 종료시간을 관리한다.우선순위큐에 있는 값보다
문제 링크 이 문제의 핵심은 우선순위의 특징과 사용법에 대해 익숙하면 쉽게 풀리는 문제이다.문제를 해결 하기 위해서 우선순위큐를 두개를 만든다.이때 우선순위큐의 한개는 큰수부터 정렬되는 것과 다른 한개는 작은 수부터 정렬되는 것으로 정의한다.D 1 큰수를 삭제하는 명령
문제 링크개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 사용자라는 이름으로 목록을 만들어서 당첨 처리 시 제외하도록 이벤트 당첨자 담
문제 링크 문제의 예시와 같습니다아파트 인덱스 기준으로 탐색하면서 기지국 설치 여부를 확인 하는 방식으로 해결 해야한다.여기서 노란색으로 표시된 부분이 새로 추가한 기지국이 된다.전파 범위를 확인 할때는 기지국 전파의 왼쪽 기준으로 확인한다.기지국을 새로 설치 했을 때
문제 링크 문제의 예시와 같습니다.자연수 2개를 가지고는 합이 1인 집합을 만들 수 없습니다. 따라서 -1이 들어있는 배열을 반환합니다.자연수 2개로 이루어진 집합 중 원소의 합이 8인 집합은 다음과 같습니다.합이 S 이면서 해당 원소들의 곱이 최대가 되기 위해서는 원
문제 링크 고속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 합니다.고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때, 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라
문제 링크 앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다.문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요.예를들면, 문자열 s가 "abcdcba
문제 링크 Finn은 편의점에서 야간 아르바이트를 하고 있습니다. 야간에 손님이 너무 없어 심심한 Finn은 손님들께 거스름돈을 n 원을 줄 때 방법의 경우의 수를 구하기로 하였습니다.예를 들어서 손님께 5원을 거슬러 줘야 하고 1원, 2원, 5원이 있다면 다음과 같이
문제 링크 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈트는 건전지로 작동되는데, 순간이동을 하면 건전지 사용량이
문제 링크 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다.단어 하나 word가 매
문제 링크 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되
문제 링크 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다.다음은 전체 유저 목록이 "muzi", "frodo", "apeach", "neo"이고, k = 2(즉, 2번 이
문제 링크 고객의 약관 동의를 얻어서 수집된 1~n번으로 분류되는 개인정보 n개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간
문제 링크(https://school.programmers.co.kr/learn/courses/30/lessons/118666이렇게 문제 설명이 긴 문제는 문제 순서대로 차근차근 풀이하면 풀이가 되는 것 같다.처음에 문제가 잘 이해가 안되었는데 survey 에
문제 링크 스코빌 지수가 낮은 항목에 대해서 계산이 이루어 지기 때문에 처음에는 배열을 이용해서 정렬후 진행 하면 되겠다 라고 생각했다.하지만 배열을 이용하면 Index 관리에 어려움이 있을 것 같다는 생각을 했다.항상 숫자가 정렬되어 있고 낮은 수 먼저 꺼낼 수 있는
문제 링크 문제 풀이 방법은 DP 방법으로 해결하면 되며, 맨왼쪽, 중간, 맨오른쪽 3단계로 나눠서 연산을 하면 된다.i = 1 행을 보면 양쪽 사이드 값 외에 중간값이 없다.이때는 맨왼쪽 값과 맨 오른쪽 값은 바로 위의 값에다가 현재값을 누적하면 된다.i = 2 행에
문제 링크 DP 방식으로 문제를 풀이하면 금방 해결이 된다.우선 문제 풀이 방법을 그림을 보자.? 자리를 갈 수 있는 경우의 수는 1개 밖에 없다.위의 그림처럼 첫째 행의 모든 요소에 갈 수 있는 방법은 1개밖에 없다.1열에 모든 요소에 갈 수 있는 방법은 1개뿐이다.
문제 링크 6, 11, 9, 10이 적힌 스티커를 떼어 냈을 때 36으로 최대가 됩니다.3, 5가 적힌 스티커를 떼어 냈을 때 8로 최대가 됩니다.처음에 이 문제를 접했을 때 짝수, 홀수 인덱스 값들을 전부 더하는 방식으로 풀었는데 이건 옳은 방법이 아니라는 것을 알았
문제 링크 문제의 예시와 같습니다.6마리의 폰켓몬이 있으므로, 3마리의 폰켓몬을 골라야 합니다.가장 많은 종류의 폰켓몬을 고르기 위해서는 3번 폰켓몬 한 마리, 2번 폰켓몬 한 마리, 4번 폰켓몬 한 마리를 고르면 되며, 따라서 3을 return 합니다.6마리의 폰켓몬
문제 링크 숫자의 길이에서 k개를 뺀 길이는 총 6이 된다.여기서 확실히 보장되어야하는 자리는 뒷자리 5개를 고정으로 두고 앞에 5자리 중에서 제일 큰 숫자를 선택한다.제일 큰 숫자를 answer에 값을 넣어 준뒤 큰 자리 인덱스부터 맨 앞까지 필요 없는 숫자이므로 지
문제 링크 1,2,4를 이용해서 7을 만들 수 있습니다.1,2,4를 이용해서 7을 만들 수 있습니다.1,4,6을 이용해서 11을 만들 수 있습니다.2,4,7을 이용해서 13을 만들 수 있습니다.4,6,7을 이용해서 17을 만들 수 있습니다.3개의 숫자를 선택하여 그 합
문제 링크 replace 를 활용하면 쉽게 해결되는 문제이다.다만 두번 반복되면 안되므로 replace 적용전에 중복된 것이 있는지 먼저 확인을 해주면 된다.이때 contains로 확인하면 된다.이 단계를 넘어가면 옹아리 할 수 있는 문자열을 replace 를 통해서
문제 링크 headgear에 해당하는 의상이 yellow_hat, green_turban이고 eyewear에 해당하는 의상이 blue_sunglasses이므로 아래와 같이 5개의 조합이 가능합니다.face에 해당하는 의상이 crow_mask, blue_sunglasse
문제 링크 이 문제는 규칙을 찾으면 금방 해결 되는 문제이다.자 그러면 규칙을 찾아보자.위와 같이 10진수를 2진수로 바꿔 보자.그러면 짝수인 경우에는 뒷자리가 0이고, 홀수인 경우에는 1인걸 볼 수 있다.그러면 여기서 규칙이 하나 생성이 된다.짝수인 경우 +1인한 값
문제 링크 {} 괄호를 없애 각 튜플을 구별한다.길이가 짧은 튜플부터 정렬을 한다.각 원소를 List 에 넣을때 해당 값이 list에 없을 때만 값을 넣는다.replace() 를 사용하여 {} 괄호를 없애 주었다.이때 } 은 / 으로 변환한 이유는 각 튜플별로 구분 하
문제 링크 1, 7으로는 소수 7, 17, 71를 만들 수 있습니다.0, 1, 1으로는 소수 11, 101를 만들 수 있습니다.\*11과 011은 같은 숫자로 취급합니다.주어진 문자열을 toCharArray()을 사용하여 각 배열에 숫자 한개씩 넣는다.DFS 탐색 방법
문제 링크 나머지연산을 이용하면 쉽게 풀리는 문제였다.1 % 3 = 1 → 1 (124 나라)2 % 3 = 2 → 2 (124 나라)3 % 3 = 0 → 4 (124 나라)나머지 연산 결과를 차곡차곡 뒤에서 앞으로 붙여서 Return 을 하면 된다.
문제 링크 문제의 예시와 같습니다.우선 이 문제를 보자마자 완전 탐색 방법으로 풀었다.아래는 완전 탐색 방법으로 해결한 코드 이며, 이렇게 풀이하면 효율성에서 실패의 쓴맛을 보게 된다.그럼 어떻게 해야하냐!!! 정답은 규칙을 찾아서 해결하면 된다.n = 3, k = 5
문제 링크 이 문제는 다른 풀이를 보면 나머지 연산을 많이 활용하는 것 같은데, 나머지 연산을 사용하지 않고 문자열 메소드을 활용하여 문제를 풀이 하였다.우선 주어진 숫자를 3진법으로 변환을 해야한다.3진법으로 변환하는 방법은 다양하게 많지만, 위의 방식으로 간단하게
문제 링크 이 문제 풀이 방법은 플로이드 와샬 알고리즘을 이용하여 풀이하면 된다.순위를 알기 위해서는 N - 1 번의 경기를 해야한다. 결국 플로이드 와샬로 만든 배열에서 행에서 0이 아닌 숫자가 N - 1개 있으면 순위를 알 수 있다.I 가 J 한테 이겼으면 1을 넣
문제 링크 우선 left 부터 right 까지 숫자의 약수를 구해야한다.left 부터 right 까지 숫자의 약수를 각각 구하면 된다.약수 구할 때는 나머지 연산을 통해서 나머지가 0이면 그 수의 약수에 해당이 되므로 count 를 증가하면 된다.약수의 갯수를 구한 다
문제 링크 배열을 정렬한다.0 ~ 9 까지 비교할 기준이 되는 변수 배열 index 를 하나 만든다.0부터 9까지 숫자를 비교하면서 index 보다 배열의 길이가 작아지는 순간 없는 숫자가 있으므로 없는 숫자를 해당하는 i 를 더한다.배열의 값과 i의 값이 다를 경우도
문제 링크 이 문제를 보자마자 제일 먼저 떠오른건 큐를 이용해서 풀이를 해야한다는 것이다.큐는 선입선출의 특징을 가지고 있으며, 트럭은 배열의 순서에 따라서 움직이기 때문에 큐 자료구조를 이용해서 문제를 해결하면 된다.또 여기서 한가지 더 알수 있는 정보가 있다. 다리
문제 링크 이 문제를 보자마자 제일 먼저 보이는건 바로 사람 마다 찍는 패턴이 있다는 것이다.1번 사람은 1, 2, 3, 4, 5 3개 숫자가 반복 된다.2번 사람은 2, 1, 2, 3, 2, 4, 2, 5 8개 숫자가 반복 된다.3번 사람은 3, 3, 1, 1, 2,
문제 링크 문제 예시와 같습니다.알아볼 수 없는 번호들이 아래와 같았다면, 1등과 6등에 당첨될 수 있습니다.민우가 구매한 로또의 번호와 당첨 번호가 모두 일치하므로, 최고 순위와 최저 순위는 모두 1등입니다.문제를 풀때 제일 먼저 정렬부터 시작하고 문제를 풀이 하였다
문제 링크 문제 풀이에서는 우선순위큐를 사용하여 문제를 풀이 하였다. 우선순위 큐를 사용한 이유는 배열이 정렬 안되었을 때의 경우를 생각해서 이렇게 풀이 하였다.하지만 문제 조건에서 section 의 배열은 오름 차순으로 정렬되어 있다고 하여 이 방법으로 풀이 하지 않
문제 링크 입력된 명령대로 동쪽으로 2칸, 남쪽으로 2칸, 서쪽으로 1칸 이동하면 0,0 -> 0,2 -> 2,2 -> 2,1이 됩니다.입력된 명령대로라면 동쪽으로 2칸, 남쪽으로 2칸, 서쪽으로 1칸 이동해야하지만 남쪽으로 2칸 이동할 때 장애물이 있는 칸을 지나기
문제 링크 이 문제는 처음 문제를 읽었을 때 문제 감이 잘 안왔던 문제였다.문제를 잘 읽어보면 배열에 있는 원소를 다 포함하는 가장 작은 사각형을 구하는 문제라는 것을 알수 있다.결국 모든 파일의 위치에서 x, y 좌표가 가장 작은 곳이 시작 지점이 되며,또한 모든 파
문제 링크 컨테이너 벨트에 놓여 있는 택배는 큐의 특징으로 앞에 있는 물건이 먼저 나가게 된다.보조 컨테이너 벨트는 가장 마지막에 놓인 택배가 가장 먼저 나가게 되는 스택의 특징을 가진다.이 두개의 특징을 이용하여 큐와 스택을 이용해서 이 문제를 풀수 있다.위와 같은
문제 링크 이 문제를 처음 봤을 때는 그리디 혹은 DP 로 풀어야하나 싶었다.이런 두 알고리즘 외에 숫자로 간단한 규칙을 파악하면 금방 해결 할수 있는 문제이다.숫자를 10단위로 만드는 것이 핵심 포인트이다.여기서 숫자가 1,2,3,4일때는 -버튼을 누르는게 빠르고 6
문제 링크 조건과 일치하는 음악 제목을 출력한다.첫 번째 예시에서 HELLO는 길이가 7분이지만 12:00부터 12:14까지 재생되었으므로 실제로 CDEFGABCDEFGAB로 재생되었고, 이 중에 기억한 멜로디인 ABCDEFG가 들어있다.세 번째 예시에서 HELLO는
문제 링크 첫 번째 라운드에서 4번 참가자는 3번 참가자와 붙게 되고, 7번 참가자는 8번 참가자와 붙게 됩니다. 항상 이긴다고 가정했으므로 4번 참가자는 다음 라운드에서 2번이 되고, 7번 참가자는 4번이 됩니다. 두 번째 라운드에서 2번은 1번과 붙게 되고, 4번은
문제 링크 이 문제는 문제 예시처럼 풀면 초과로 인해 해결이 불가하다.애니메이션 보자마자 바로 든 생각은 배열에 규칙에 맞게 값들을 넣은 다음 left, right 범위에 맞게 잘라서 출력하면 된다고 생각했다.위와 같은 배열이 있다고 가정 해보자.숫자 밑에 있는 괄호가
문제 링크 첫째 아들에게 2, 3번 바구니를, 둘째 아들에게 4번 바구니를 사주면 두 아들은 각각 과자 3개를 받습니다.주어진 조건에 맞게 과자를 살 방법이 없습니다.문제만 읽으면 약간 복잡해 보이는 느낌이 드는 문제인데, 단순하게 모든 범위를 거치면서 가장 큰 수만