2021.08.07
프로그래머스 코딩테스트 연습 - 가운데 글자 가져오기 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 매개변수로 입력받은 s의 길이가 짝수인지 홀수인지를 나누고 각 경우에 맞게 가운데 글자 substring으로 잘라내서 answer에 저장해서 리턴해주기. 프로그래머스 코딩테스트 연습 - 자릿수 더하기 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다 자연수기 때문에 0보다 큰 경우에 반복을 시켜주기 위해 조건을 주어 while문을 사용하였고 10씩 나누어주면서 나머지를 구해서 그것을 ..
2021.08.07
2021.08.04
프로그래머스 코딩테스트 연습 - 서울에서 김서방 찾기 String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. Kim이 한 번만 나타난다는 조건이 있어서 String 객체 하나 만들어서 저장해두고 배열이랑 비교 시키기. 몇 번째인지 위치를 찾기 위해 seoul 배열을 for문으로 돌려주고 if문으로 비교해서 형식에 맞춰서 answer출력시키기.
2021.08.04
2021.08.03
프로그래머스 코딩테스트 연습 - 두 정수 사이의 합 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요. a와 b의 대소관계는 정해져있지 않습니다. 해결을 위해 우선 a가 b보다 클 경우, 두 수가 같을 경우, a가 b보다 작을 경우로 나누어서 구현하면 될 것이라 생각하였고, 합을 구하기 위해서는 각 나눈 경우마다 for문을 돌려서 합을 구해서 return 해 줄 answer변수에 저장해서 완료.
2021.08.03
2021.07.31
프로그래머스 코딩테스트 연습 - 2016년 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수를 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요. 제한 조건으로는 2016년은 윤년이고 2016년 a월 b일은 실제로 있는 날이라고 한다. 문제를 풀기 위해 우선 요일을 저장할 배열과 날짜를 저장할 배열을 만들어주고 total이라고 총 일수를 구하는 변수를 만들어준다. for문을 돌면서 일수를 구해주고 입력받은 일수인 b도 더해준다. 월 ~ 일까지 7일이..
2021.07.31
2021.07.29
백준 5단계(1 ~2번 문제) 1번 문제의 경우 N 개의 숫자가 주어졌을 때 최대값, 최소값 구하는 문제였다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수라는 조건이 있어서, 최소값을 저장할 변수 min과 최대값을 저장할 변수 max에 이 값들을 초기값으로 설정해 주었다. 정수형 배열 하나 선언하고 for문을 돌면서 min, max 값이 arr[i]값 비교해주면 해결. Scanner sc = new Scanner(System.in); int min = -1000000; int max = 1000000; int n = sc.nextInt(); int[] arr = new int[n]; for(int i = 0; i < n; i++) { arr[i] = sc.ne..
2021.07.29
2021.07.22
백준 4단계(1 ~ 3번 문제) "두 정수 A와 B를 입력받은 다음, 합을 출력하는 프로그램을 작성하시오. 입력의 마지막에는 0 두 개가 들어온다" 라는 문제. 문제 해결을 위해 while문으로 반복을 시켜주었고, if문으로 두 정수가 0일 경우 break를 걸어주었다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNextInt()) { int x = sc.nextInt(); int y = sc.nextInt(); if (x == 0 && y == 0) { break; } System.out.println(x + y); } } } 2번 문제의 경우 앞선..
2021.07.22
2021.07.21
백준 3단계(9 ~ 11번 문제) 9번 문제의 경우 하나의 수인 N을 입력받아서 첫째 줄에는 1개, 2번째 줄에서는 2개 .. N번째에는 N개의 별을 찍는 별찍기 문제이다. 프로그래밍을 하는 사람이라면 다 아는 그 별찍기 문제라 기억을 되살려 문제 해결 완료. 10번 문제의 경우도 별찍기 문제였는데 이번에는 오른쪽 정렬로 별찍는 문제였다. 이중 for문을 사용하여 공백을 면저 출력하고 별을 찍어주면 해결 가능하다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System. in); int star = sc.nextInt(); for (int i = 1; i 0; j --) { if (i < j) ..
2021.07.21
2021.07.20
백준 3단계(5 ~ 8번 문제) 5번 문제는 자연수 하나 입력받아서 1부터 N까지 한 줄에 하나씩 출력하는 문제. 어렵지 않게 금방 해결할 수 있었다. 6번 문제는 5번 문제의 반대로 자연수 하나 입력받아서 N부터 1까지 한 줄에 하나씩 출력. for문에서 초기값을 입력받은 수로 설정하고 1보다 크거나 같을 때 까지 숫자 하나식 -하면 된다. 7번 문제는 "두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다." 라는 문제였다. public class Main { public static void main(String[] args) { Scanner sc = new ..
2021.07.20
2021.07.19
백준 3단계(3 ~ 4번 문제) 3번 문제의 경우 n을 입력받아서 1부터 n까지의 합을 구하는 문제. 합을 저장할 변수 지정하고 for문으로 해결. 4번 문제는 "첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다" 라는 문제이다. 단 입출력 시간 제한이 있어서 자바의 경우 "Scanner와 System.out.println 대신, BufferedReader와 BufferedWriter를 사용할 수 있다. BufferedWriter.flush는 맨 마지막에 한 번만 하면 된다" 라는 힌트가 있었던 문제였다. 해결을 위해 BufferedReader와 BufferedWriter를 사용했고 f..
2021.07.19