프로그래머스 17

카카오인턴_프로그래머스_수식최대화

https://programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 � programmers.co.kr 연산자는 +, -, * 세가지이다. 문제를 읽어보면 연산자의 우선순위를 조합하여 주어진 식을 최대로(음수는 절대값) 하는 결과값을 구하는 문제이다. 주의 할점! 1. 연산자 두개가 동일한 우선순위를 가질수없다. 2. 같은 연산자가 두개 이상이면 앞에있는 연산자부터 계산을 해준다. 풀이 접근! 주어진식에서 연산자를 빼내서 우선순위를 조합하여 계산을 해줄수도있..

프로그래머스 2020.07.07

프로그래머스_카카오인턴십_경주로건설_자바

https://programmers.co.kr/learn/courses/30/lessons/67259 코딩테스트 연습 - 경주로 건설 [[0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0],[0,0,0,0,1,0,0,0],[0,0,0,1,0,0,0,1],[0,0,1,0,0,0,1,0],[0,1,0,0,0,1,0,0],[1,0,0,0,0,0,0,0]] 3800 [[0,0,1,0],[0,0,0,0],[0,1,0,1],[1,0,0,0]] 2100 [[0,0,0,0,0,0],[0,1,1,1,1,0],[0,0,1,0,0,0],[1,0,0,1,0,1],[ programmers.co.kr 문제를 보면 n * n 배열판에서 (0, 0) => (n - 1, n - 1) 로 가는..

프로그래머스 2020.07.02

프로그래머스_카카오인턴십_보석쇼핑_자바

https://programmers.co.kr/learn/courses/30/lessons/67258 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 모든 보석들을 한번씩 포함하는 배열의 시작인덱스와 끝인덱스를 구하는 문제이다. 가능 한 모든 경우를 for 문을 돌면서 구한다면 쉽게 구할수있지만 효율성 검사를 통과하지 못한다. 핵심로직 ! 1. 배열의 보석들을 닮을 큐를 만들어준다. 2. 전체 보석이 몇개인지 저장하기위해서 hashSet 를 하나 만들어준다. 3. hashMap 을 사용하여 큐에 보석들을 담을때마다 hashMap에 개수를 저장해준다. 4. 만..

프로그래머스 2020.07.02

프로그래머스_매칭점수_자바

https://programmers.co.kr/learn/courses/30/lessons/42893 코딩테스트 연습 - 매칭 점수 매칭 점수 프렌즈 대학교 조교였던 제이지는 허드렛일만 시키는 네오 학과장님의 마수에서 벗어나, 카카오에 입사하게 되었다. 평소에 관심있어하던 검색에 마침 결원이 발생하여, 검색개발팀� programmers.co.kr 이문제를 풀때 주어진 데이터에서 필요한 정보를 가져와야한다. 다음과 같은 방식으로 구해줄수있다. "나의나이는26입니다." 문자열에서 "26살" 을 가져와보자. String a = "나의나이는26살입니다."; String Text = "나의나이는"; // a.indexOf(Text) 는 a 문자열에서 Text(나의나이는) 이 시작되는 index 를 리턴한다. //..

프로그래머스 2020.07.01

프로그래머스_배달_자바

https://programmers.co.kr/learn/challenges 코딩테스트 연습 기초부터 차근차근, 직접 코드를 작성해 보세요. programmers.co.kr 다음 문제는 다이내믹 프로그래밍을 대표하는 문제이다. 다이내믹 프로그래밍이랑 하나의 문제를 더 작은 부분 문제로 나눠서 푸는 것이다. 여기서 조건은 나눠진 부분 문제들이 중복해서 나타나는 것이다. 최적 부분 구조라고 한다. 다음 문제를 보면 n 원을 만들기 위해서 1, 2, 3, ~~ n-1 원에서 구했던 값들을 이용하여 푼다. 예시를 들어보자 예를 들어 동전 1, 2, 5 가 있고 5원을 만들어야 한다. 그럼 일단 1원으로 5원을 만드는 경우를 나타내 보자 (1, 2, 5 간에 순서는 상관없다.) 원 / 0 1 2 3 4 5 개수/..

프로그래머스 2020.06.16

프로그래머스_후보키_자바

https://programmers.co.kr/learn/courses/30/lessons/42890 코딩테스트 연습 - 후보키 [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr 후보키란 모든 튜플을 유일하게 식별할수있어야한다. => 유일성 유일성을 만족하는 후보키(혹은 후보키의 조합)들은 튜플들을 구별하는데 꼭필요한 속성들로만 이루어 져야한다 => 최소성 최소성을 잘 따져줘야한다. 예를들어 (1, 3) 이 후보키라..

프로그래머스 2020.06.14

프로그래머스_JadenCase_자바

https://programmers.co.kr/learn/courses/30/lessons/12951 코딩테스트 연습 - JadenCase 문자열 만들기 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 programmers.co.kr 문제를 풀때 공백이 길던 짧던 공백을 기준으로 다음 처음 문자열을 대문자로 바꿔주면된다. 이때 숫자를 toUpperCase() 해도 그대로 이기때문에 신경쓰지않아도 된다. 즉 처음 받는 문자열을 소문자로 받아준다음에 공백다음에 오는 첫문자만 대문자로 바꿔주면된다. 현재값이 공백인지 확인하기 위해서 boo..

프로그래머스 2020.06.07

프로그래머스_베스트앨범_자바

https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 �� programmers.co.kr 다음 조건을 보자 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래가 다음과 같은 정보를( 고유번호 : id, 재생횟수 : play, 장르 : genre) 를 갖는다고하면 조건에 맞게 정렬 하기위해서는 1순위는 많..

프로그래머스 2020.06.03

프로그래머스_자물쇠와 열쇠_자바

https://programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 열쇠의 크기는 항상 자물쇠의 크기보다 작다. 문제를 이해하는 데 있어서 중요한 점은 열쇠는 자물쇠의 범위 밖으로 나가도 된다. 풀이 열쇠는 이동과 회전을 할 수 있다. 1. 열쇠가 이동하는 경우 예를 들어 열쇠가 3 * 3 배열이고 자물쇠가 2 * 2 배열이라면 열쇠가 자물쇠의 맨 왼쪽 위부터 오른쪽 아래까지 이동시키면서 겹치는 모든 경우를 검사하여 정답인 경우(자물쇠가 열쇠와 겹치는 부분의 합(돌기: 1 홈 ..

프로그래머스 2020.06.01

프로그래머스_종이접기_자바

https://programmers.co.kr/learn/courses/30/lessons/62049 코딩테스트 연습 - 종이접기 직사각형 종이를 n번 접으려고 합니다. 이때, 항상 오른쪽 절반을 왼쪽으로 접어 나갑니다. 다음은 n = 2인 경우의 예시입니다. 먼저 오른쪽 절반을 왼쪽으로 접습니다. 다시 오른쪽 절반을 왼쪽�� programmers.co.kr 진행과정을 생각해보자 Step 1 : 0 Step 2 : 0 0 1 Step 3 : 0 0 1 0 0 1 1 진행과정동안 배열 사이에 (0 1) 이 삽입된다. 모양을 그려보면 완전 이진 트리가되고 왼쪽자식이 0 오른쪽자식이 1 이된다. ex Step 3) 0 0 1 0 1 0 1 inorder 순회를 하면 Step 3 의정답이되고 다음 Step 은 ..

프로그래머스 2020.05.26