문제 자연수 N을 만드는 연속된 자연수의 합으로 나타내는 가짓수 구하기 입력 정수 N 출력 가짓수 ★Key point : 투 포인터 입력으로 주어지는 자연수 N의 범위가 n) { sum = sum -start; start++; } else { end++; sum = sum + end; } } System.out.println(count); } } 인덱스를 가리키는 두 개의 포인터를 활용해서 연속된 숫자의 묶음을 표현하고, n과 sum의 크기 비교에 따라 각 포인터를 이동시킨다 sum == N: end_index++; sum = sum + end_index; count++; sum N: sum = sum - start_i..
코딩테스트
문제 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 사과의 위치와 뱀의 이동경로가 주어질 때 이 게임이 몇 초에 끝나는지 계산 : 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪힐 때 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 벽이나 자기자신의 몸과 부딪히면 게임이 끝난다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉,..
문제 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄: 수의 개수 N과 합을 구해야 하는 횟수 M 둘째 줄: N개의 수 셋째 줄부터 M개의 줄 : 합을 구해야 하는 구간 i와 j 출력 총 M개의 줄에 i번째 수부터 j번째 수까지 합을 출력 ★Key point : 누적합 알고리즘 사용하기 각 구간 입력마다 for문을 돌려서 합을 구하면 런타임 에러가 나기 때문! 1 ≤ N ≤ 100,000 1 ≤ M ≤ 100,000 1 ≤ i ≤ j ≤ N import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; class Main { // j) ..
코딩테스트 문제를 풀다가 해설을 봐도 이해가 안 가서 정리하고자 글을 올립니다 Q. 동네 편의점의 주인인 동빈이는 N개의 동전을 가지고 있습니다. 이때 N개의 동전을 이용하여 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성하세요. 예를 들어 N = 5이고, 각 동전이 각각 3원, 2원, 1원, 1원, 9원짜리(화폐 단위) 동전이라고 가정합시다. 이 때 동빈이가 만들 수 없는 양의 정수 금액 중 최솟값은 8원입니다. 또 다른 예시로 N = 3 이고, 각 동전이 각각 3원, 5원, 7원짜리(화폐 단위) 동전이라고 가정합시다. 이 때 동빈이가 만들 수 없는 양의 정수 금액 중 최솟값은 1원입니다. A. 화폐 단위를 오름차순으로 정렬한 후, 생성한 target 변수와 크기를 비교한다 targe..
-주사위의 개수 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return class Solution { public int solution(int[] box, int n) { int answer = 0; answer = (box[0]/n) * (box[1]/n) * (box[2]/n); return answer; } } -합성수 찾기 class Solution { public int solution(int n) { int answer = 0; for (int i=3; i (int) IntStream.rangeClosed(1, i).filter(i2 -> i % i2 == 0).count() >..
- 점의 위치 구하기 사분면의 위치 return class Solution { public int solution(int[] dot) { int answer = 0; answer = dot[0] > 0 && dot[1] >0 ? 1 : dot[0] 0 ? 2 : dot[0] 0 && dot[1] < 0 ? 4 : null; return answer; } } 삼항연산자 쓰는 것에 맛들렸는데, 조금 더 보기 좋은 건 if else 이렇게 크게 나누고 그 안에서 작게 나누는 코드인 것 같기도 하다. - 2차원으로 만들기 1차원 배열을 2차원 배열로 만들라는 문제 class Solution { public int[][] so..
- 개미 군단 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 사냥감의 체력 hp가 매개변수로 주어질 때, 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return class Solution { public int solution(int hp) { int answer = 0; answer = hp / 5 + hp % 5 / 3 + hp % 5 % 3; return answer; } } - 모스 부호 import java.util.*; class Solution { public String solution(String letter) { String answer = ""; String[] morse = { ".-","-...","-.-...
- 특정 문자 제거하기 정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return class Solution { public int[] solution(int[] numbers, int num1, int num2) { int[] answer = new int[num2-num1 + 1]; for (int i= 0; i String.valueOf((char) (49 + operand))).collect(Collectors.joining()); } } stream을 이용한 것인데... 여러가지 궁금한 것이 생겼다 첫번째, 우선 내가 사용한 Integer.parseInt 와 Integer.valueO..
- 특정 문자 제거하기 class Solution { public String solution(String my_string, String letter) { my_string = my_string.replace(letter, ""); return my_string; } } 원래는 delete 메소드를 사용하려 했는데 delete(int start, int end) deleteCharAt(int index) 이렇게 위치도 알아야 하고, StringBuilder 쓰는 것이 불가피하여 다른 메소드를 찾아보던 중 replace를 발견! - 각도기 예각, 직각, 둔각, 평각 나타내기 class Solution { public int solution(int angle) { int answer = 0; double ..
- 문자열 뒤집기 매개변수로 받은 값이 배열 형태가 아니기 때문에,, substring을 사용하였다 class Solution { public String solution(String my_string) { String answer = ""; for (int i = my_string.length()-1; i >= 0 ; i--){ answer += my_string.substring(i, i+1); } return answer; } } --> 근데 그냥 substring(i)해도 됐을 듯 Substring 문법 String substring(int index) String substring(int start, int end) : 끝나는 지점은 end-1 다른 사람 풀이 //(1) import java.u..