전체 글
-
두개 뽑아서 더하기알고리즘/프로그래머스 2020. 11. 19. 18:01
문제 : https://programmers.co.kr/learn/courses/30/lessons/68644 코딩테스트 연습 - 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr 1) 풀이 방법 기준 인덱스를 기준으로, 기준 인덱스보다 큰 인덱스들의 값들의 합과 비교해서 리스트 담기. 2) 나의 코드 import java.util.TreeSet; /** *https://programmers.co.kr/learn/courses/30/lessons/68644 *두개 뽑아서 더하기. *..
-
[알고리즘 문제해결 전략] - 무식하게 풀어보기알고리즘 2020. 11. 6. 00:10
7장 무식하게 풀어보기(Brute Force) - 모든 경우의 수를 하나씩 확인해가며 알고리즘 문제를 푸는것 - 컴퓨터의 연산속도에 기대해 좋은 효과를 낼수도 있는 방법 - 실제 프로그래밍 대회에서 입력값을 작게 하여 최적의 속도와 판별성을 판단할때도 사용한다. 무식하게 풀어보기 알고리즘의 대표적인것은 완전탐색이다. 재귀 함수/재귀 호출 : 자신이 수행 할 작업을 여러 조각으로 쪼갠 다음 한 조각을 수행, 나머지는 자기 자신을 호출하여 실행하는 함수. 재귀 함수는 더이상 쪼개지지 않는 작업에 도달 했을때 해당 결과를 반환하는 조건문이 필요하다. *재귀함수의 기저 사례 : 더이상 쪼개지지 않는 가장 작은 작업에 해당한다 예) 자연수 n이 주어졌을때 1부터 n까지의 합을 재귀함수로 작성해라. public i..
-
가장 큰 수알고리즘/프로그래머스 2020. 11. 2. 00:02
문제 : programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 1) 문제 풀이 주어진 numbers의 데이터를 10으로 나누어서 나머지 값별 데이터로 데이터를 정렬한다. TreeMap Map의 Value들을 내림차순으로 정렬한다. 정렬된 value들을 순서대로 하나씩 string 형태의 데이터로 이어 붙인다. 2) 구현 코드 import java.util.*; cl..
-
크레인 인형뽑기 게임알고리즘/프로그래머스 2020. 11. 1. 23:57
문제 : https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 1) 문제 풀이 배열을 돌며 move에 해당하는 데이터를 찾는다. 0이 아닌 값이 나오는 경우(인형) 인형을 담고 있는 바구니의 맨 첫번째 값(바구니 인형)을 확인한다. 바구니의 인형이 배열에서 꺼낸 인형과 같은 경우 count를 증가시킨다. 다른 경우 바구니에 해당 인형을 집어넣는다 조사한 배열의 인형은 0으로 초기화 시킨다. 인형은 2개씩 없어지므로 count*2를 리턴하여 ..
-
나누어 떨어지는 숫자 배열알고리즘/프로그래머스 2020. 11. 1. 23:51
문제 : programmers.co.kr/learn/courses/30/lessons/12910 코딩테스트 연습 - 나누어 떨어지는 숫자 배열 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하 programmers.co.kr 1) 문제 풀이 divisor로 데이터를 나누고 나머지가 0인지 확인한다. 나머지가 0인 데이터를 리스트에 담는다. 리스트의 크기가 0보다 큰경우 데이터를 하나씩 배열에 담는다. 2) 구현 방법 import java.util.*; class Solution { public int[] solution(..
-
이상한 문자 만들기알고리즘/프로그래머스 2020. 11. 1. 23:48
문제 1) 문제 풀이 문자를 한글자씩 확인한다. flag를 변수를 통해 짝수인지 홀수인지 판단한다. 2) 구현 코드 public String solution(String s) { String answer = ""; boolean isOdd = false; for(String checkStr : s.split("")) { if(checkStr.equals(" ") || isOdd){ answer += checkStr.toLowerCase(); isOdd = false; }else { answer += checkStr.toUpperCase(); isOdd = true; } } return answer; }
-
가운데 글자 가져오기알고리즘/프로그래머스 2020. 11. 1. 23:44
출처 : 코딩테스트 연습 - 가운데 글자 가져오기 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret programmers.co.kr 1) 문제 풀이 입력받는 글자 크기를 반으로 나눈다. String의 substring 함수를 이용하여 짝수인 경우 substring(몫-1, 몫 +1) 을 통해 가운데 두글자 획득. 홀수인 경우 substring(몫, 몫+1)로 가운데 글자 획득 * public String substring(int beginIndex, int endIndex) : 시작인덱스 부터 종료 인덱스 -1까지의 글자 리턴 예) "hambu..
-
다리를 지나는 트럭알고리즘/프로그래머스 2020. 10. 19. 00:34
문제 - https://programmers.co.kr/learn/courses/30/lessons/42583 /* 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다. ※ 트럭이 다리에 완전히 오르지 않은 경우, 이 트럭의 무게는 고려하지 않습니다. 예를 들어, 길이가 2이고 10kg 무게를 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 경과 시간 다리를 지난 트럭 다리를 건너는 트럭 대기 트럭 0 [] []..