본문 바로가기
728x90
반응형

JAVA146

JAVA 프로그래머스 [문자열 뒤집기] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 문자열 뒤집기 https://school.programmers.co.kr/learn/courses/30/lessons/120822 해결 과정 우선 문자열을 배열로 변환하는 과정이 필요하다. 먼저 answer 배열을 만들기 위해 문자열의 길이인 my_String.length(); 을 사용한다. 문자열의 글자를 char 타입으로 받아오기 위해 java.lang.String 클래스의 charAt() 메소드를 사용한다. (이 메소드는 문자열의 i번째 문자를 char 타입으로 리턴 할 수 있음) for (int i = 0; i < my_string.length(); i++) { sep[i] = my_string.charAt(i); } 그리고 answer .. 2023. 5. 27.
JAVA Doit 알고리즘 코딩테스트 자바 편 - Day6 04 정렬 04-3 삽입 정렬 04-4 퀵 정렬 2023. 5. 27.
JAVA 프로그래머스 [배열 뒤집기] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 배열 뒤집기https://school.programmers.co.kr/learn/courses/30/lessons/120821 해결 과정 먼저 num_list 배열의 크기만큼 answer 배열을 생성한다. 반복문을 돌면서 num_list의 값들을 answer의 반대되는 순서로 넣어준다. answer배열을 return 해준다. 소스 코드 class Solution { public int[] solution(int[] num_list) { int[] answer = new int[num_list.length]; for (int i = 0; i 2023. 5. 26.
JAVA 프로그래머스 [나이 출력] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 나이 출력 https://school.programmers.co.kr/learn/courses/30/lessons/120820 해결 과정 먼저 2000년을 기준으로 생각하기 위해 age에서 2022년도의 22를 빼준후 1을 빼준다. 태어난 년도 계산을 위해 이 값을 2000에서 빼주면 된다. 소스 코드 class Solution { public int solution(int age) { int answer = 0; answer = 2000-(age-22-1); return answer; } } 2023. 5. 26.
JAVA 프로그래머스 [아이스 아메리카노] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 아이스 아메리카노 https://school.programmers.co.kr/learn/courses/30/lessons/120819 해결 과정 아이스 아메리카노 잔수를 k로 하고, 반복문에서 money를 5500으로 나누었을 때 몫이 0이라면 더이상 살수 없는 경우를 나타내므로 break; 를 이용하여 반복문을 빠져나온다. 반복문을 돌며 money에서 5500을 뺄 때마다 i를 +1해주고 이것을 k(잔수)로 대입해준다. 배열은 k, money로 이루어져 있으므로, 다 구해진 후 answer 배열을 선언하고 초기화해주면 된다. 소스 코드 class Solution { public int[] solution(int money) { int k = 0.. 2023. 5. 26.
JAVA Doit 알고리즘 코딩테스트 자바 편 - Day5 04 정렬 04-1 버블 정렬 문제 015 수 정렬하기 1 백준 2750번 https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 01단계 1. 문자열 형태로 입력값을 받음 2. 문자 배열로 변환 3. 문자 배열값을 순서대로 읽으면서 숫자형으로 변환하여 더함 * 문자열을 숫자형으로 변경하려면? - 아스키코드에서 같은 의미의 문자와 숫자의 드 값 차이는 48이다. - ex) 문자'1'을 숫자 1로 변환하려면 '1'-48 또는 '1'-'0' 으로연산 02단계 0.. 2023. 5. 26.
JAVA 프로그래머스 [옷가게 할인 받기] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 옷가게 할인 받기 https://school.programmers.co.kr/learn/courses/30/lessons/120818 해결 과정 if문은 위에서 부터 순차적으로 진행되기 때문에 제일 큰 값부터 진행해준다 단순히 그 조건에 해당하면 기존 price값에 할인율을 적용한 값이 나오도록 곱해진 것을 다시 넣어주고 마지막에 return 해주면 된다. 하지만 아래 두 코드를 보자. 처음에 자꾸 런타임 에러가 발생했다. 다른 사람의 코드를 참고해보니 통과가 나왔다. 여기서 두개의 차이는 *=로 표현하고 안하고 차이인데 왜 결과는 이럴까? 다음 포스트들에서 해답을 찾았다 오호,, https://cinnamonc.tistory.com/m/208 .. 2023. 5. 26.
JAVA 프로그래머스 [피자 나눠 먹기(3)] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 피자 나눠 먹기(3) https://school.programmers.co.kr/learn/courses/30/lessons/120816 해결 과정 피자 조각 수 : slice 피자를 먹는 사람의 수 : n n명의 사람이 적어도 한 조각씩 먹어야 하므로, 두 가지로 나누어 생각할 수 있다 n을 slice로 나누었을 때 나머지가 0이 아니라면, 피자는 몫 보다 +1을 해야한다. n % slice != 0 일때 피자 개수는 n/slice + 1 소스 코드 class Solution { public int solution(int slice, int n) { int answer = 0; if (n % slice != 0) answer = n / slic.. 2023. 5. 25.
JAVA 프로그래머스 [피자 나눠 먹기(2)] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 피자 나눠 먹기(2) https://school.programmers.co.kr/learn/courses/30/lessons/120815 해결 과정 피자 한 판은 6조각, 한사람이 먹는 피자의 개수를 i라고 하고 사람수는 n이므로, 6와 n의 최대공약수를 구한다. (gcd) 사람 수 n를 최대공약수인 gcd로 나눠주면 피자가 몇 판이어야하는지 알 수 있다. 소스 코드 class Solution { public int solution(int n) { int answer = 0; int gcd = 0; for(int i =1; i 2023. 5. 25.
JAVA 프로그래머스 [피자 나눠 먹기(1)] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 피자 나눠 먹기(1) https://school.programmers.co.kr/learn/courses/30/lessons/120814 해결 과정 규칙에 따라서 알아보기 위해 몇가지 예시를 사용해보겠다 1명일 경우 -> 1개 2명일 경우 -> 1개 6명일 경우 -> 1개 7명일 경우 -> 1개, 14명일 경우 -> 2개 21명일 경우 -> 3개 이렇게 7의 배수가 될때마다 피자의 갯수가 하나씩 올라가는 것을 규칙으로 하여 반복문에서 7의 배수가 될때마다 1씩 증가하도록 하면 된다. 여기서 주의해야 할 점은 반복문에서 i0) 필요한 피자의 개수는 n/7 + 1개가 된다. 2023. 5. 25.
JAVA 프로그래머스 [배열의 평균값] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 배열의 평균값 https://school.programmers.co.kr/learn/courses/30/lessons/120817 해결 과정 배열 원소들의 평균을 구하려면, 배열 모든 원소의 합을 구한 뒤, 배열의 길이로 나눠주면 된다. 배열의 길이는 numbers. length로 사용한다. 소스 코드 class Solution { public double solution(int[] numbers) { double answer = 0; for (int i = 0; i< numbers.length; i++) { answer += numbers[i]; } answer = answer/numbers.length; return answer; } } 2023. 5. 25.
JAVA Doit 알고리즘 코딩테스트 자바 편 - Day4 03 자료구조 03-5 스택과 큐 스택(Stack) - 삽입과 삭제 연산이 후입선출(LIFO) 로 이뤄지는 자료구조 스택 용어 1. 위치 - top : 삽입과 삭제가 일어나는 위치 2. 연산 - push : top 위치에 새로운 데이터를 삽입하는 연산 - pop : top 위치에 현재 있는 데이터를 삭제하고 확인하는 연산 - peek : top 위치에 현재 있는 데이터를 단순 확인하는 연산 깊이 우선 탐색, 백트래킹 종류의 코딩 테스트에 효과적 큐(Queue) - 삽입과 삭제 연산이 선입선출(FIFO)로 이뤄지는 자료구조 큐 용어 1. rear : 큐에서 가장 끝 데이터를 가리키는 영역 2. front : 큐에서 가장 앞의 데이터를 가리키는 영역 3. add : reat 부분에 새로운 데이터를 삽입하는 .. 2023. 5. 25.
JAVA 프로그래머스 [나머지 구하기] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 나머지 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/120810 해결 과정 (생략) 소스 코드 class Solution { public int solution(int num1, int num2) { int answer = -1; answer = num1 % num2; return answer; } } 2023. 5. 24.
JAVA 프로그래머스 [최빈값 구하기] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 최빈값 구하기https://school.programmers.co.kr/learn/courses/30/lessons/120812 해결 과정 이 문제,,, 좀 어려웠다....ㅜ 우선, 빈도수를 구하기 위해 array 배열의 원소를 count 배열에 해당하는 인덱스에 넣는 것을 이용한다. 먼저 array 배열에서 가장 큰 값을 구한 후 거기에 1을 더해주면 count 배열의 크기를 설정할 수 있다. (배열에서 가장 큰 값이 5라고 하면, count배열의 크기는 5+1=6 으로 지정할 수 있다. 이유는 인덱스는 0부터 시작하기 때문. array 배열 에 원소 3이 있다면 이에 해당하는 count 배열의 인덱스는 count[4]) array 배열에서 가.. 2023. 5. 24.
JAVA Doit 알고리즘 코딩테스트 자바 편 - Day3 03 자료구조 03-3 투 포인터 문제 006 연속된 자연수의 합 구하기 백준 2018번 https://www.acmicpc.net/problem/2018 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한 www.acmicpc.net 01단계 1. 문자열 형태로 입력값을 받음 2. 문자 배열로 변환 3. 문자 배열값을 순서대로 읽으면서 숫자형으로 변환하여 더함 * 문자열을 숫자형으로 변경하려면? - 아스키코드에서 같은 의미의 문자와 숫자의 드 값 차이는 48이다. - ex) 문자'1'을 숫자 1로 변환하려면 '1'-4.. 2023. 5. 24.
JAVA 프로그래머스 [중앙값 구하기] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 중앙값 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/120811 해결 과정 배열의 길이가 홀수라는 조건이 있으므로 짝수는 고려하지 않는다. 우선 배열을 Arrays.sort(array); 로 정렬해주고, 배열의 중앙값을 찾아야하기 때문에 해당 인덱스를 배열의 길이/2 로 나타낼 수 있다; answer = array[array.length/2]; 소스코드 import java.util.Arrays; class Solution { public int solution(int[] array) { int answer = 0; Arrays.sort(array); answer = array[a.. 2023. 5. 24.
JAVA 프로그래머스 [짝수는 싫어요] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 짝수는 싫어요 https://school.programmers.co.kr/learn/courses/30/lessons/120813 해결 과정 if (n % 2 == 0) { int[] arr = new int[n/2]; } else { int[] arr = new int[n/2+1]; } 이렇게 하면 런타임 오류가 발생한다. 하지만 다음과 같이 실행하면 오류가 발생하지 않는다 int[] arr; if (n % 2 == 0) { arr = new int[n/2]; } else { arr = new int[n/2+1]; } 이유는 무엇일까? 암튼 그렇게 배열 arr의 길이를 정해준 후, 인덱스를 위해 int k = 0 초기화해주고 반복문을 돌면서 홀.. 2023. 5. 24.
JAVA 프로그래머스 [숫자 비교하기] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 숫자 비교하기 https://school.programmers.co.kr/learn/courses/30/lessons/120807 해결 과정 단순히 두 매개변수가 같으면 1을 return 하고 다르면 -1을 return하면 되기 때문에 조건문을 사용하면, num1 == num2 일 경우 return 1; 아닐 경우 return -1; 이 풀이를 토대로 간단하게 해결 할 수 있다. 소스 코드 class Solution { public int solution(int num1, int num2) { int answer = 0; if (num1 == num2) { return 1; } else { return -1; } } } 2023. 5. 23.
JAVA 프로그래머스 [배열 두 배 만들기] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 배열 두 배 만들기 https://school.programmers.co.kr/learn/courses/30/lessons/120809 해결 과정 해결 방법은 간단하다. 먼저 return을 위한 배열을 생성한다. (int [ ] answer) 배열의 크기는 numbers의 배열의 크기와 똑같이 생성하면 되기 때문에, numbers.length를 우선 크기만 할당해준다. 그 다음 반복문을 사용하여 number의 원소를 하나씩 짚어가며, 그 원소의 두배 값을 answer 배열에 넣어주면 된다. answer[i] = 2*numbers[i]; 반복문을 배열의 크기만큼 돌고 나면 answer도 모두 원소가 생기게 된다 마지막엔 return answer;로.. 2023. 5. 23.
728x90
반응형