본문 바로가기

프로그래머스107

코딩테스트 연습 > 연속 부분 수열 합의 개수 - JAVA https://school.programmers.co.kr/learn/courses/30/lessons/131701 풀이 - 나의 생각 이 문제를 풀기 위한 포인트!!!! 1. 중복 제거 2. 한 바퀴 돌리기 1. 중복 제거 Set 쓰면 해결!! 2. 한 바퀴 돌리기 이중 for문 쓰면서 해결했는데 결국에는 주어진 배열을 넘어가면 처음으로 넘어가는 게 중요 처음에는 index = i+j >= arr.length ? (i+j)-arr.length : i+j 이런 식으로 했는데 index = (i+j)%arr.length 이렇게 하면 더 간단하게 해결 할 수 있었다. 테스트 결과 속도도 더 빨랐다. ( 조건 검사를 할 필요가 없으니까) 이외..... 처음에는 더해지는 값들을 저장하기 위해 반복문 안에서 in.. 2023. 12. 28.
코딩테스트 연습 > 귤 고르기 > - JAVA 풀이 - 나의 생각 귤을 골르는데 필요한 건 결국 개수이다. 크기는 중요하지 않다. 그래서 Map을 사용해서 크기별 개수를 세고 개수가 많은 순서대로 정렬한 후 K에서 개수를 빼면서 사용되는 귤의 크기의 개수를 세면 해결!!! 보완할 점은 첫째 Map에 값을 넣을 때 if 문을 사용해서 key값에 해당하는게 있는지를 보고 값을 넣었는데 그것보다는 map.getOrDefault(KEY, DEFAULT_VALUE)를 사용해서 해당 값이 있으면 key에 해달하는 Value를 없으면 본인이 설정한 Default Value를 반환하는 메소드를 활용하면 소스의 가독성 및 성능이 올라간다. 둘째 Map은 정렬이 안되기 때문에 List에 Map의 value값을 넣어서 정렬을 하려고 했는데 처음에는 반복문을 통해 일일이.. 2023. 12. 20.
코딩테스트 연습 > N개의 최소공배수 - JAVA 문제 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요. 제한사항 arr은 길이 1이상, 15이하인 배열입니다. arr의 원소는 100 이하인 자연수입니다. 입출력 예 arr result [2,6,8,14] 168 [1,2,3] 6 코드 import java.util.*; class Solution { public int solution(int[] ar.. 2023. 12. 18.
코딩테스트 연습 > 피보나치 수 - JAVA 문제 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = 2 + 3 = 5 와 같이 이어집니다. 2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 제한사항 n은 2 이상 100,000 이하인 자연수입니다. 입출력 예 n rerurn 3 2 5 5 코드 import java.util.*; class Solution { p.. 2023. 12. 7.
코딩테스트 연습 > 올바른 괄호 - JAVA 문제 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 제한사항 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 입출력 예 s answer "()()" true "(())()" true ")()(" false "(()(" false 코드 import .. 2023. 11. 3.
프로그래머스 > 동적계획법(Dynamic Programming) > 정수 - JAVA 문제 위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다. 삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록solution 함수를 완성하세요. 제한사항 삼각형의 높이는 1 이상 500 이하입니다. 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다. 입출력 예 triangle result [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 코드 class Solu.. 2023. 6. 1.