Algorithm
-
[JAVA/Level2] 정렬된 수에서 하나의 수 위치 찾기Algorithm/프로그래머스 2021. 6. 11. 23:33
문제 설명 여러 개의 수가 정렬된 순서로 있을 때 특정한 수를 찾으세요. 수의 예: [12, 25, 31, 48, 54, 66, 70, 83, 95, 108] 단순 반복문을 이용하면 수의 개수에 따라 비교 횟수가 증가하는 O(n)의 수행이 이루어진다. 수가 정렬된 상태에서 이진 탐색을 활용할 경우 매번 비교되는 요소의 수가 절반으로 감소될 수 있으므로 O(logN)의 수행으로 원하는 수를 찾을 수 있다. 입출력 예 찾고자하는 수의 위치를 찾을 경우 배열 내 인덱스의 값을 출력하세요. 찾고자하는 수가 존재하지 않을 경우 "찾는 숫자가 존재하지 않습니다."를 출력하세요. 풀이 수가 정렬된 상태이므로 중간의 값을 하나 선택하고, 찾으려는 값이 그보다 크면 범위를 오른쪽으로 그보다 작으면 범위를 왼쪽으로 좁히며..
-
[JAVA/Level1] 최솟값과 최댓값Algorithm/프로그래머스 2021. 6. 11. 23:01
문제 설명 여러 개의 수가 배열에 있을 때 그 중 가장 큰 값과 가장 작은 값을 찾는다. 배열의 몇 번째에 있는지 순서를 찾는다. 반복문을 한번만 사용하여 문제를 해결한다. 수의 예 : [10, 55, 23, 2, 79, 101, 16, 82, 30, 45] 풀이 1. 배열 내 인덱스 0에 위치한 값을 maxNumber변수와 minNumber변수에 저장한다. 2. 배열의 크기만큼 반복문을 이용하여 더 큰수나 작은 수가 나올 경우 maxNumber의 값과 minNumber의 값을 변경시켜준다. 3. 변경될 경우 해당 인덱스의 위치를 저장한다. 코드
-
[JAVA/Level1] 문자열을 정수로 바꾸기Algorithm/프로그래머스 2021. 6. 1. 23:49
문제 설명 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. 제한 조건 s의 길이는 1 이상 5이하입니다. s의 맨앞에는 부호(+, -)가 올 수 있습니다. s는 부호와 숫자로만 이루어져있습니다. s는 "0"으로 시작하지 않습니다. 입출력 예 예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다. str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다. 풀이 1. String을 int로 변경하기 위하여 Integer.parseInt를 사용하였다. 2. 변경된 값을 answer에 저장하고, 해당 값을 리턴하였다. 코드
-
[JAVA/Level1] 수박수박수박수박수박수?Algorithm/프로그래머스 2021. 6. 1. 23:39
문제 설명 길이가 n이고, "수박수박수박..."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. 제한 조건 n은 길이 10,000이하인 자연수입니다. 입출력 예 n return 3 "수박수" 4 "수박수박" 풀이 1. 파라미터 값 n개 만큼 수박을 반복하기 위해 StringBuilder를 사용하여 answer변수를 선언한다. 2. for문을 사용하여 n까지 반복을 수행한다. 3. 삼항연산자를 사용하여 i가 홀수인 경우 "수"를 추가하고, 아닐경우 "박"을 추가한다. 4. answer값을 리턴한다. 코드
-
[JAVA/Level1] 짝수와 홀수Algorithm/프로그래머스 2021. 6. 1. 20:39
문제 설명 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 입출력 예 num return 3 "Odd" 4 "Even" 풀이 1. num의 숫자가 홀수일 경우 Odd를 return하고, num의 숫자가 짝수일 경우 Even을 리턴한다. 2. num은 파라미터로 값을 받기 때문에 조건문을 사용하여 num이 짝수인지 홀수인지 판단해야한다. 3. 짝수와 홀수를 구분하기 위하여 조건식을 num % 2 == 0으로 설정한다. 해당 조건문은 num을 2로 나누었을때 나머지의 값이 0인 값일 경우 조건문 내부 구문을 실행한다. 4. num이 짝수일 경우 answer의 값에 "Ev..
-
2748번:피보나치 수 2Algorithm/백준 알고리즘 2019. 11. 25. 23:48
2748번:피보나치 수 2 문제출처:https://www.acmicpc.net/problem/2748 2748번: 피보나치 수 2 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 www.acmicpc.net 배열을 선언하고, 초기 값으로 0과 1을 저장한다. 반복문은 2번째 부터 N+1까지 반복하며 배..
-
11399번:ATMAlgorithm/백준 알고리즘 2019. 11. 25. 02:12
11399번:ATM 문제출처:https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net N명의 사람을 입력받아 배열에 각 개인의 시간을 입력한다. N번째 사람이 대기해야하는 시간은 배열의 0번째 원소부터 N-1번째 원소까지의 합이다. 가장 최소의 시간을 구해야 한다. 즉 각 개인의 시간이 작은 사람부터 정렬을 하는 것이 키 포인트 정렬을 한 뒤 합을 통해 N번째 사람의 대기시간을 각각 구하고, 구한 값을 모두 더 한다. 본 소스코드는 C++기반으로 작성되었음을 알려드립니다. 1 2 3..
-
7568번:덩치Algorithm/백준 알고리즘 2019. 11. 12. 21:04
7568번:덩치 문제 출처: https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x,y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x,y), (p,q)라고 할 때 x>p 그리고 y>q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56,177), (45,165) 라고 한다면 A의 덩치가 B보다 큰 www.acmicpc.net 1. 첫 번째 입력에 비교할 총 사람 수를 입력한다. 2. 몸무게와 키의 값을 통해 등수를 매길 수 있는데 자신을..