본문 바로가기

Algorithm & SQL179

프로그래머스 JAVA <콜라츠 추측> 콜라츠 추측 문제 설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요. 제.. 2022. 6. 17.
프로그래머스 JAVA <자연수 뒤집어 배열로 만들기> 자연수 뒤집어 배열로 만들기 문제 설명 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예nreturn 12345 [5,4,3,2,1] 주어진 매개변수 타입을 잘 확인해야 합니다. long 타입이기 때문에 answer 배열에 값을 넣어줄때 형변환이 꼭 필요합니다. 안하면 1 ,4 10? 에서 테스트 에러가 발생합니다. class Solution { public int[] solution(long n) { int[] answer = {}; String s = ""+n; answer = new int[s.length()]; int idx = 0; .. 2022. 6. 17.
백준 JAVA 10872 팩토리얼 재귀 - 팩토리얼 가장 기초적인 문제입니다. 팩토리얼을 구현할 때 가장 중요한 건 자기 자신을 호출하는 함수이기 때문에, 종료되는 시점이 필요하다는 것입니다. 팩토리얼의 예시로 5! 일 때 5 * 4* 3 * 2* 1 이므로, 1이되면 종료되게 구현해야합니다. 따라서 매개변수를 n 이라고 했을 때, n 이 1이되면 return 1 을 통해 종료되게 구현했습니다. package BAEKJOON; import java.util.Scanner; public class NO10872 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); System.out.println(Factoria.. 2022. 6. 17.
백준 JAVA 4892 숫자 맞추기 게임 n 이 짝수일 때 / 홀수일 때를 구분지어 연산을 해야하는 문제입니다. 출력값이 1. 2. ..을 출력해야해서 count 변수를 만들어주었습니다. 또한, n 값이 0 이 될경우에 break 문으로 반복문을 빠져나갈 수 있도록 했습니다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int count = 1; while(true) { int n = sc.nextInt(); if(n == 0) break; if(n % 2 == 0) { n = (((n * 3) / 2) * 3) / 9; System.out.println(count + .. 2022. 6. 17.
백준 JAVA 4101 크냐? 예제와 출력을 이해를 못하고 풀어서 실패한 문제입니다. 입력을 받고 No / Yes 출력받으면 되는 문제인 줄 알았는데 반복문을 통해서 0 0 을 입력할 때까지 값을 계속 입력받아야하는 문제였습니다. while 문을 통해서 입력을 계속받다가 0 0 을 입력받게되면 break; 를 통해서 while을 빠져나와줍니다. if else 를 통해서 yes / no 를 출력받습니다. package BAEKJOON; import java.util.Scanner; public class NO4101 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (true) { int a = sc.nextInt(); int b =.. 2022. 6. 17.
백준 JAVA 2752 세수정렬 입력받은 3개의 수를 오름차순으로 정렬하는 문제입니다. 길이가 3인 배열을 만들어 입력받은 후, Arrays.sort를 이용해 오름차순으로 정렬하고 for each 문을 통해서 문자열로 다시 출력했습니다. package BAEKJOON; import java.util.Arrays; import java.util.Scanner; public class NO2752 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int [] arr = new int [3]; for(int i =0; i 2022. 6. 17.
백준 JAVA 1550 16진수 문자열s 를 입력받아, Integer.parseInt() 를 이용해서 ( ) 진수를 10진수로 변경하는 문제이다. 답안의 Integer.parseInt(s,16); 의 의미는 문자열로 입력받은 s인 16진수를 10진수로 변경한다는 의미이다. 예제처럼 A를 입력하면 10 이나오는데, 해당 이유는 16진수는 0~9 + A~F 로 이루어져있기 때문에, A를 입력받으면 10이 출력된다 추가 - 예시로 Integer.parseInt(s,8); 일 경우에는, 8진수인 s 를 10진수로 나타낸다는 의미이다. 8진수는 0~7 로 이루어져있다. 역순으로 15를 출력받고싶으면 17 을 입력받으면 15를 출력받을 수 있다. 1 7 = 15 (1*8^1) + (7*1) package BAEKJOON; import java.u.. 2022. 6. 17.
백준 JAVA 11654 아스키코드 아스키코드를 출력해야 하는 문제입니다 next() 를 이용해 입력값을 받으면 String 형태로 받게 되고, charAt() 을 이용해서 첫번째 문자열을 가져옵니다. c 에는 해당 값이 들어가게 되고, char형인 문자를 int형으로 만들어 출력해주면 아스키코드값으로 나오게 됩니다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int c = sc.next().charAt(0); System.out.println(c); } } 2022. 6. 16.
프로그래머스 JAVA <2016년> 2016년 문제 설명 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요. 제한 조건 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다) 입출력 예 abresult 5 24 "TUE" class Solution { public String solution(int a, int b) { String ans.. 2022. 6. 16.