CodingTest 123

[BAEKJOON / Java] 2884. 알람 시계

Question https://www.acmicpc.net/problem/2884Algorithm조건문을 사용한다.분(M)이 45보다 작은 경우시(H)를 1 감소시킨다.만약 시(H)가 0이라면, H를 23으로 바꾼다.분(M)은 60 - (45 - M)으로 계산한다.분(M)이 45 이상인 경우분(M)에서 45를 뺀다.Codeimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { // B..

[프로그래머스 / Java] Lv.2 튜플

Questionhttps://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm문자열 s에서 집합들을 길이 기준 오름차순으로 정렬한다.각 원소의 길이를 알기 위해 괄호를 제거해서 저장해야한다.앞에서부터 집합을 순회하며, 아직 선택되지 않은 원소만 순서대로 결과에 추가한다.순서를 보장하면서, 원소를 추가할 수 있는 ArrayList 자료구조를 사용해 저장한다.Codeimport java.util.*;class Solution { public int[] solution(String s) { ..

[프로그래머스 / Java] Lv.1 [1차] 비밀지도

Question https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithmarr1과 arr2 각 배열의 인덱스 0부터 10진수를 2진수로 변환하기 → arr1과 arr2 두 번 똑같은 코드가 중복되므로 메서드로 만들어준다.10진수를 2진수로 변환하는 방법 → 2로 계속 나누면서 나온 나머지를, 몫이 0이 되면 역순으로 읽는다.ex. 10진수 13을 2진수로 변환13 ÷ 2 = 몫 6, 나머지 16 ÷ 2 = 몫 3, 나머지 03 ÷ 2 = 몫 1, 나머지 11 ÷ 2 = 몫 0, 나머지 1나머지..

[프로그래머스 / Java] Lv.1 소수 만들기

Question https://school.programmers.co.kr/learn/courses/30/lessons/12977 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm주어진 숫자 중 3개의 수 고르기삼중 for문을 사용해 인덱스 0번부터 중복되지 않게 3개의 수를 더한다.i, j, k는 결국 하나의 같은 배열에서의 인덱스를 가리키므로, 중복되지 않게 j = i + 1, k = j + 1로 초기화해 자연스럽게 i isPrime 메서드를 작성해, true이면 answer 값을 1 증가시킨다.소수인지 판단하기소수인지 판단하는 메서드 isPrime을 만든다.1은 모든 숫자가 약수로 가지고 있으..

[BAEKJOON / Java] 2798. 블랙잭

Question https://www.acmicpc.net/problem/2798AlgorithmBruce Force(브루스 포스) 알고리즘 문제가능한 모든 경우의 수를 전부 탐색해서 답을 찾는 방법입력 처리BufferedReader와 StringTokenizer를 사용해 카드 개수 N과 목표 값 M, 그리고 카드 값들을 배열 arr에 입력받는다.브루트 포스 탐색세 장의 카드를 뽑기 위해 삼중 for문(i, j, k)을 사용한다.각 조합마다 arr[i] + arr[j] + arr[k]를 계산한다.조건 검사 및 결과 갱신합이 정확히 M이면 최적해이므로 바로 반환한다.합이 M보다 작고, 지금까지 찾은 최댓값보다 크면 result를 갱신한다.결과 출력모든 경우의 수 탐색 후, 조건에 맞는 최댓값(result)..

[BAEKJOON / Java] 1546. 평균

Question https://www.acmicpc.net/problem/1546Algorithm입력 처리첫 줄에서 시험 과목 개수 N을 입력받는다.둘째 줄에서 N개의 점수를 배열에 저장한다.최댓값 찾기배열을 정렬하여 마지막 원소(arr[N-1])를 최댓값으로 사용한다.(더 효율적으로는 정렬 대신 한 번의 순회로 최댓값을 구할 수도 있다.)점수 변환 및 합산각 점수를 (현재 점수 / 최댓값) * 100으로 변환한다.변환된 점수를 모두 합산한다.평균 계산변환된 점수의 총합을 N으로 나누어 평균을 구한다.출력평균 값을 출력한다.Codeimport java.util.Arrays;import java.io.BufferedReader;import java.io.InputStreamReader;import java..

[프로그래머스 / Java] Lv.1 N개의 최소공배수

Question https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm배열의 길이가 1이면, 그 원소 자체가 최소공배수이므로 바로 반환한다.배열의 길이가 2 이상이면, 앞의 두 원소의 최대공약수(GCD)를 구한 뒤,두 원소의 최소공배수(LCM)를 (a * b) / gcd(a, b) 공식으로 구한다.배열의 길이가 3 이상일 경우,앞서 구한 최소공배수(answer)와 다음 원소의 최대공약수(GCD)를 구한다.(answer * arr[i]) / gcd(answer, arr[i])로 새로운 최소공배..

[BAEKJOON / Java] 8958. OX퀴즈

Question https://www.acmicpc.net/problem/8958Algorithm테스트 케이스 개수 입력받기첫 줄에서 정수 T를 읽는다.각 케이스별 OX 문자열 처리BufferedReader.readLine()으로 문자열 한 줄을 읽는다.문자 순회하며 점수 계산문자열 길이만큼 반복 (for (int i=0; icharAt(i)로 i번째 문자를 꺼낸다.문자가 'O'면: 연속 카운트(count)를 1 증가시키고, 그 값을 점수(score)에 더한다.문자가 'X'면: 연속 카운트(count)를 0으로 초기화한다.케이스별 결과 저장계산된 최종 점수를 출력 버퍼(StringBuilder)에 넣는다.모든 케이스 처리 후 출력System.out.print로 한 번에 결과를 출력한다.Codeimport..

[BAEKJOON / Java] 10809. 알파벳 찾기

Question https://www.acmicpc.net/problem/10809Algorithma-z까지 순회하며 주어진 문자열 S의 각 문자를 찾는다.String 클래스의 indexOf() 메서드를 사용해 해당 문자가 str 안에서 처음 등장하는 위치를 찾는다. indexOf() : 문자열에서 지정된 문자(유니코드 코드 포인트)의 첫 번째 등장 인덱스를 반환, 없으면 -1Codeimport java.io.*;public class Main { public static void main(String[] args) throws IOException { // BufferedReader: 표준 입력(System.in)으로부터 한 줄씩 빠르게 읽기 BufferedReader b..

[프로그래머스 / Java] Lv.1 카드 뭉치

Question https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm주어진 배열 cards1과 cards2는 0번 인덱스부터 차례대로 사용해야 하므로, 현재 위치를 가리킬 변수를 각각 선언한다.goal 배열을 순서대로 순회하면서, 현재 문자열이 cards1[c1] 혹은 cards2[c2]와 일치하는지 비교한다.일치한다면 해당 배열의 인덱스 변수를 하나 증가시켜 다음 요소를 가리키게 한다.어느 쪽과도 일치하지 않으면 더 이상 goal을 만들 수 없으므로 "No"를 반환한다.끝까지 순회하며 ..