알고리즘 공부 170

[프로그래머스] JadenCase 문자열 만들기 (JAVA)

문제 설명 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고) 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 s는 길이 1 이상 200 이하인 문자열입니다. s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다. 숫자는 단어의 첫 문자로만 나옵니다. 숫자로만 이루어진 단어는 없습니다. 공백문자가 연속해서 나올 수 있습니다. 입출력 예sreturn "3people unFollowed me" "3people Unfollowed Me" "for the last week" "Fo..

[백준] 11399 : ATM (JAVA)

백준 11399 자바 ATM 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 77522 51898 42034 67.485% 문제 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때..

재귀 알고리즘(팩토리얼, 최대공약수, 피보나치 수열, 하노이의 탑, 8퀸문제 예제)

재귀란? 어떤 사건이 자기 자신을 포함하고 다시 자기 자신을 사용하여 정의 될 때 재귀적 이라고 한다. 재귀함수란? 자기 자신을 호출하는 함수! 처음 불려진 함수에서(스택 맨 밑에있는 메소드) return 되는 값이 최종 return 값이 된다 즉! 종료조건이 충족될때까지 작업을 수행하는 것! 재귀함수는 for문이나 while문으로 대체 가능하다! 그런데 재귀함수를 사용하는 이유 → 코드가 간결해지고, 유지보수가 쉬어 재귀함수는 호출될때마다 메모리의 스택이 쌓인다. 한계치 이상으로 호출돼서 스택이 넘치면 메모리 부 에러. 속도면에서도 재귀함수는 jump가 잦아서 반복문에 비해 시간을 더 소요한다. 이 문제를 해결하기위해 꼬리 재귀 최적화를 지 선형알고리즘으로 만들어 실행! 그러면 스택이 넘치지 않음! 📌..

알고리즘 공부 2022.11.19

[프로그래머스] 최댓값과 최솟값 (JAVA)

프로그래머스 최댓값과 최솟 값 자바 문제 설명 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다. 제한 조건 s에는 둘 이상의 정수가 공백으로 구분되어 있습니다. 입출력 예 s return "1 2 3 4" "1 4" "-1 -2 -3 -4" "-4 -1" "-1 -1" "-1 -1" 방법 1 - Math.max사용 class Solution { public String solution(String s) { String [] str =s.s..

[프로그래머스] 짝수와 홀수 (JAVA)

프로그래머스 짝수와 홀수 자바 짝수와 홀수 문제 설명 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 입출력 예 num return 3 "Odd" 4 "Even" class Solution { public String solution(int num) { if(num%2==0) return "Even"; else return "Odd"; } }

[백준] 2748 : 피보나치 수 2(JAVA)

피보나치 수 2 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 79859 32236 26459 40.028% 문제 피보나치 수는 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번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. n은 90보다 작거나 같은 자연수이다. 출력 첫째 줄..

[백준] 10870 : 피보나치 수 5(JAVA) - 피보나치 재귀함수

백준 10870 자바 피보나치 수 5 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 85692 52509 44843 61.796% 문제 피보나치 수는 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번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. n은 20보다 작거나 같은 자연..

[백준] 1679 : 팩토리얼 0의 개수(JAVA)

백준 1676 자바 팩토리얼 0의 개수 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 128 MB 51166 24558 20357 47.885% 문제 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500) 출력 첫째 줄에 구한 0의 개수를 출력한다. 예제 입력 1 10 예제 출력 1 2 예제 입력 2 3 예제 출력 2 0 방법1 - factorial 재귀함수 주의! N의 범위는 (0 ≤ N ≤ 500)로 매우 큰 수가 될 수 있다. BigInteger로 풀어줘야 한다. 못푼다. 답은 나오지만 범위가 커지면 안되는 틀린 코드 import java.io.BufferedReader; import..

[백준] 11931 : 수 정렬하기 4(JAVA)

백준 11931 자바 수 정렬하기 4 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 256 MB 10826 5766 4659 55.228% 문제 N개의 수가 주어졌을 때, 이를 내림차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 내림차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력 1 5 1 2 3 4 5 예제 출력 1 5 4 3 2 1 Arrays.sort() 를 쓰면 시간초과가 날 수 있으니 Collection.sort() 를 쓰자 Collecti..

[백준] 2751 : 수 정렬하기 2(JAVA)

백준 2751 자바 수 정렬하기 2 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 256 MB 223417 64088 44536 30.448% 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력 1 5 5 4 3 2 1 예제 출력 1 1 2 3 4 5 방법 1 (비추)- Arrays.sort() import java.io.BufferedReader; import ..