본문 바로가기

알고리즘/프로그래머스5

Java 문제풀이 (Programmers) Java 문제풀이 (Programmers) 같은 숫자는 싫어 배열이 주어진다 배열 안에 숫자가 주어지는데, 연속으로 나열된 같은 숫자는 하나의 숫자로 반환한다 예) [1, 1, 3, 4, 4, 4, 4, 5, 6, 6, 6, 7] => [1, 3, 4, 5, 6, 7] 1, 4, 6은 모두 연속으로 같은 숫자로 나열되어 있어, 하나로 줄인다 간단하게, 먼저 제일 앞에 있는 숫자를 배열에 미리 넣는다 그 다음은 인덱스 1로 시작하여, 전의 숫자와 비교하며, 전의 숫자와 다르면, answer 배열에 해당 숫자를 넣으면 된다 import java.util.*; public class Solution { public ArrayList solution(int []arr) { ArrayList answer = ne.. 2023. 6. 14.
[Java] 문제풀이 (Programmers) Java 문제풀이 (Programmers) 분수의 덧셈 (numer1 / denom1) + (numer2 / denom2) 의 값을 구해, 분자는 answer[0]에, 분모는 answer[1]에 저장하는 것이다 먼저 answer[0]와 answer[1]에 나누지 않은 채로, 그냥 더해서 저장을 한다 그리고 2부터 시작해서 for문을 돌면서 answer[0]과 answer[1]를 나눌 수 있으면, 계속 나눠준다 최대공약수를 나누는 방법과 똑같은 것이다 (대신 최대공약수를 따로 구하는 것이 아니라, 최대공약수를 구하는 식을 for문과 while문을 통해서 구하는 것이다) class Solution { public int[] solution(int numer1, int denom1, int numer2, in.. 2023. 5. 26.
Programmers 2 레벨 테스트 2 Programmers 2 레벨 테스트 2 문제 배열에 숫자들이 주어진다. 위에 그림처럼 배열은 원형으로 이루어져있다. 배열 안에 있는 연속된 숫자들을 더해서, 더한 숫자들의 개수를 구하는 것 예를 들어 연속된 숫자 하나 : [4], [7], [9], [8] 연속된 숫자 둘 : [8, 4], [4, 7], [7, 9], [9, 8] 연속된 숫자 셋 : [8, 4, 7], [4, 7, 9], [9, 8, 4] 연속된 숫자 넷 : [8, 4, 7, 9] 위의 숫자들을 더하고, 반복된 숫자들을 제거 후, 개수를 세면 된다 문제 풀이 더한 숫자들은 set()에 넣을 것 그렇게 해야, 반복된 숫자들을 알아서 없앨 수 있다 배열 elements가 주어지는데 elements + elements를 해서, 배열을 두 배로.. 2023. 2. 7.
Programmers 2 레벨 테스트 1 Programmers 2 레벨 테스트 1 문제 숫자가 담겨있는 배열이 주어진다. 그 배열 안에 있는 숫자들을 나열하여, 제일 큰 숫자를 만드는 것이다. [6, 20, 4] 가 있다면 6420을 출력하는 것 각 숫자는 1부터 1000까지의 숫자다. 즉 999가 제일 큰 숫자. 문제 풀이 배열 안에 있는 숫자들을 문자열로 만든다 그렇게 하면 숫자의 제일 앞 자리 숫자를 기준으로 순차적으로 배열을 해준다 각 문자열을 4번을 반복시키고, 그 중 4자리를 가지고 온다. 4자리는 1부터 10000까지의 숫자가 주어져서 최대 4자리가 되는 것 4번 반복하는 이유는 (람다를 사용한다) [6, 21, 2, 8] 이 주어졌을 때 먼저 정렬을 하면 [8, 6, 21, 2] 가 된다 제일 크게 만드려면 86221이어야 한다 .. 2023. 2. 7.
[Python] 프로그래머스 - 소수 구하기 🧑‍💻 [Python] 프로그래머스 - 소수 구하기 Level 2 처음에는 그냥 일반적인 식으로 소수 구하기를 풀었다 시간 초과 n까지의 숫자를 순회하면서, 각 숫자가 소수인지 아닌지를 찾음 에라토스테네스의 체를 사용하면 더 빠르게 소수를 구할 수 있다 2부터 시작을 해서, 2의 배수인 숫자들, 3의 배수인 숫자들, 5의 배수인 숫자들 등을 빼주는 것이다 문제풀이 코드 def solution(n): answer = 0 flag = True if n == 1: answer = 0 else: for num in range(2, n + 1): cnt = 0 for i in range(1, (num // 2) + 1): if num % i == 0: cnt += 1 if cnt > 1: flag = False .. 2023. 1. 18.