Algorithm13 [프로그래머스 Java] 할인 행사 Lv.2 * 순서 - 문제 - 문제 설명 - 문제 목표 - 문제 풀이 - 최종 코드 - 포인트 - 다른 사람 코드 - 문제 - 문제 설명 원하는 제품, 원하는 제품의 개수가 있다. 마트에서 매일 한 제품을 할인하는데 하나씩만 구매할 수 있다. 10일 연속으로 할인 제품을 구매할 수 있는 날짜의 수를 구한다. 제품을 구매할 수 없으면 0을 return한다. - 문제 목표 10일 연속으로 할인 제품을 구매할 수 있는 날짜의 수를 구한다. - 문제 풀이 1. 원하는 제품과 원하는 제품의 수를 wMap에 저장한다. 2. 연속해서 할인 제품 구매할 수 있는 날짜를 세야하니 길이를 다음과 같이 정해서 for문을 돌린다. 3. 할인하는 제품과 개수를 dMap에 저장한다. 4. 할인하는 제품의 개수와 원하는 제품의 개수를 비교.. 2023. 9. 19. [프로그래머스 Java] 예상대진표 Lv.2 * 순서 - 문제 - 문제 설명 - 문제 목표 - 문제 풀이 - 최종 코드 - 포인트 - 다른 사람 코드 - 문제 - 문제 설명 토너먼트 문제이다. 2명씩 짝을 지어 경기를 하며 참가자 번호가 계속 바뀐다. 선수 A, B는 계속 이긴다. - 문제 목표 선수 A, B가 서로 경기할 때의 라운드를 구하면 된다. - 문제 풀이 1. 1라운드부터 시작하지만 0라운드라고 했을 경우 +1씩 라운드가 같아질 때까지 구하면 된다. 2. 선수번호가 계속 바뀌므로 함수를 이용한다. 3. 짝수일 경우, 몫이 선수 번호가 된다. 4. 홀수일 경우, (몫 + 1) 이 선수 번호가 된다. - 최종 코드 public static int solution(int n, int a, int b) { int answer = 0; //1. .. 2023. 9. 19. [프로그래머스 Java] 올바른 괄호 Lv.2 * 순서 - 문제 - 문제 설명 - 문제 목표 - 문제 풀이 - 최종 코드 - 포인트 - 다른 사람 코드 - 문제 - 문제 설명 '(' 문자와 ')' 문자로 이루어진 문자열 s가 주어진다. '(' 문자로 시작했으면 짝지어서 ')' 문자로 끝나면 true 반환, 그렇지 않으면 false를 반환한다. - 문제 목표 '(' 문자로 시작했으면 짝지어서 ')' 문자로 끝나는지 확인한다. - 문제 풀이 1. '(', ')' 올바른 짝인지 확인하기 위해 Stack을 이용한다. 2. '(' 문자면 Stack에 넣는다. 3. ')' 문자일 경우, Stack이 비어 있지 않으면 Stack 제일 위 문자열이 '('인지 확인한다. '('일 경우 Stack에서 꺼낸다. 4. ')'일 경우 Stack에 ')'을 넣는다. 5. '.. 2023. 9. 12. [프로그래머스 Java] 최소값 만들기 Lv.2 * 순서 - 문제 - 문제 목표 - 문제 설명 - 문제 풀이 - 최종 코드 - 포인트 - 문제 - 문제 목표 각각의 숫자를 곱한 값을 더해서 최소값 만들기 - 문제 설명 두개의 배열이 주어진다. 각각의 배열에서 한 숫자씩 정해서 각각의 정한 숫자를 곱하고 곱한 값을 더한다. 모든 숫자를 곱하기 전까지 반복한다. - 문제 풀이 1. 배열값을 오름차순한다. 2. 배열 A에서 최소값과 배열 B에서 최대값을 곱하고 더한다. - 최종 코드 import java.util.Arrays; class Solution { public int solution(int []A, int []B) { int answer = 0; //1. 배열값을 오름차순한다. Arrays.sort(A); Arrays.sort(B); for(int.. 2023. 9. 11. [프로그래머스 Java] JadenCase 문자열 만들기 Lv.2 * 순서 - 문제 - 문제 목표 - 문제 설명 - 문제 풀이 - 최종 코드 - 포인트 - 문제 - 문제 목표 여러 문자 중에 문자 첫번째만 대문자로 바꾸기 - 문제 설명 공백이 들어간 여러 문자가 주어진다. - 문제 풀이 1. 문자를 모두 소문자로 바꾸고 배열로 만든다. 2. 처음 문자는 대문자로 바꾼다. 문자가 공백으로 시작했을 경우 flag는 true가 되고 처음 문자를 대문자로 바꾸고 문자열에 더한다. 3. 문자가 공백이면 flag에 true를 넣는다. - 최종 코드 public static String solution(String s) { String answer = ""; //1. 문자를 모두 소문자로 바꾸고 배열로 만든다. String[] sArr = s.toLowerCase().split(".. 2023. 9. 5. [프로그래머스 Java] 추억 점수 Lv.1 * 순서 - 문제 - 문제 목표 - 문제 설명 - 문제 풀이 - 최종 코드 - 포인트 - 문제 - 문제 목표 각각의 사진에 대한 추억 점수의 합 구하기. - 문제 설명 사진 속 인물이 주어진다. 사진 속 인물에 대한 그리움 점수가 주어진다. 사진 속 인물이 2차원 배열로 주어진다. - 문제 풀이 1. map을 이용해서 사진 속 인물과 그리움 점수를 매핑한다. 2. 2중 for문을 이용한다. 3. 해당 사진에 사진 속 인물에 있으면 그리움 점수를 더한다. 4. 그리움 점수 합인 추억 점수를 배열에 넣는다. - 최종 코드 public static int[] solution(String[] name, int[] yearning, String[][] photo) { int[] answer = new int[ph.. 2023. 9. 5. [프로그래머스 Java] 달리기 경주 Lv.1 * 순서 - 문제 - 문제 목표 - 문제 설명 - 문제 풀이 - 최종 코드 - 포인트 - 문제 - 문제 목표 최종 순위에 대한 선수 이름을 구하려고 한다. - 문제 설명 불려지는 선수가 앞 선수를 추월한다. 추월되는 선수는 뒤로 밀려난다. - 문제 풀이 1. map을 이용해서 선수에 대한 순위를 매긴다. 2. for문, map을 이용한다. 3. map을 통해 불려지는 선수 등수를 구한다. 4. 불려지는 선수 등수를 이용하여 이전 선수와 이름을 바꾼다. 5. map에서 불려진 선수의 순위를 갱신한다. 6. map에서 이전 선수의 순위를 갱신한다. - 최종 코드 public static String[] solution(String[] players, String[] callings) { Map map = n.. 2023. 9. 5. [정렬 알고리즘] 선택정렬(Selection Sort), 삽입정렬(Insertion Sort) 정렬 알고리즘에는 7가지가 있다. 선택정렬, 삽입정렬, 버블정렬, 병합정렬, 힙정렬, 퀵정렬, 기수정렬 그 중 선택정렬과 삽입정렬에 대해 알아보자. 1. 선택정렬(Selection Sort) : 주어진 리스트에서 값을 선택해서 나머지 값들과 비교하여 순서대로 값을 정렬하는 알고리즘이다. 방법 주어진 리스트 중에 처음 값을 최소값이라고 지정한다. 그 이후 값과 비교하며 최소값을 찾는다. 최소값을 맨 앞에 위치한 값(i번째 값)과 교체한다. 처음 for문에서 값 하나를 증가시킨다. 나머지 리스트를 같은 방법으로 교체한다. private static void selectionSort() { for (int i = 0; i < n-1; i++) { int min = i; for (int j = i+1; j < .. 2023. 5. 21. 이전 1 2 다음