전체 글 104

[JAVA] 백준 17615번 : 볼 모으기(한국정보올림피아드/KOI 2019 2차대회/초등부)

문제 그리디 문제이다. 해결 방안 처음에 R과 B의 갯수를 각각 세어서 rCnt, bCnt에 저장해준다. 그리디 문제로 볼을 이동하는 4가지 방법 중 최소 이동횟수를 구하면 된다. 1. R공을 모두 왼쪽으로 이동 문제의 그림1을 볼때 RRRRBBBB로 나열하기 위해서는 첫번째 R을 제외하고는 다 옮겨줘야 한다. 따라서 왼쪽에 R이 계속 있을경우 cnt를 세어준다음 Rcnt-cnt는 이동해야하는 R공의 갯수가 된다. ex) RBBBRBRRR인 경우 첫번째 R이 있으므로 cnt = 1이된다. 따라서 Rcnt(5)-cnt(1)=4가 되고 실제로 왼쪽으로 이동해야하는 R공의 갯수가 된다. 2. R공을 모두 오른쪽으로 이동 3. B공을 모두 왼쪽으로 이동 4. B공을 모두 오른쪽으로 이동 2,3,4번도 뒤에서부터..

[JAVA] 백준 17614번 : 369(한국정보올림피아드/KOI 2019 2차대회/초등부)

www.acmicpc.net/problem/17614 문제 369 규칙에 맞게 1~N까지 나왔을때 N까지 박수의 총 횟수를 출력하는 것이다. 해결 방안 1~N까지 완전 탐색을 해주며 각 수의 자릿수들이 3,6,9인경우 result 변수를 하나씩 증가해주었다. ex) 13 이면 박수 한번 33이면 박수 두번 가 되야 하므로 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; // 한국정보올림피아드 // KOI 2019 2차대회 초등부 // 369 public class Main { public static void main(String args[]) throws Exception { Bu..

[JAVA] 프로그래머스 : 키패드 누르기 (2020 카카오 인턴십)

programmers.co.kr/learn/courses/30/lessons/67256?language=java 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 그냥 구현 문제 입니다. 문제에 주어진 조건에 맞춰 풀면 되는 문제이다. 해결 방안 키패드의 위치를 x, y로 생각해주었다. 00~02 .. 30~32 1. 일단 문제의 조건4에서 2,5,8,0 숫자 키패드가 나온경우 두 엄지손가락의 현재 키..

[JAVA] 프로그래머스 : 폰켓몬 (찾아라 프로그래밍 마에스터)

programmers.co.kr/learn/courses/30/lessons/1845?language=java 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. � programmers.co.kr 해결 방안 고를 수 있는 폰켓몬 중 종류의 최댓값을 구하는 문제이다. 따라서 HashMap에 key값을 종류, value 값을 종류의 갯수로 넣고 pick해야하는 갯수보다 map size가 크면 종류의 갯수가 더 많은 것이므로 전체 다 다른 종류를 고를 수 있게 되서 answer = pick이 된다. pick해야하는 갯수보다 map size가 작..

[JAVA] 프로그래머스 : 숫자 게임 (Summer/Winter Coding(~2018))

programmers.co.kr/learn/courses/30/lessons/12987?language=java 코딩테스트 연습 - 숫자 게임 xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다. 먼저 모든 사원이 무작위로 � programmers.co.kr 해결 방안 문제에서 원하는 것은 B의 최대 승점이므로 A가 최소인 경우부터 차근차근 B가 높을 때의 갯수를 구해준다. A와 B 배열을 오름차순으로 정렬해준다. A 작은 수부터 B와 비교를 해주는데 이때 B의 배열을 하나씩 증가하면서 해준다. 이 때 B 배열의 index 시작 값은 A[i] < B[j] 보다 큰 경우가 됬을 때 idx ..

[JAVA] 프로그래머스 : 점프와 순간 이동 (Summer/Winter Coding(~2018))

programmers.co.kr/learn/courses/30/lessons/12980?language=java 코딩테스트 연습 - 점프와 순간 이동 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈� programmers.co.kr 해결 방안 처음에는 문제에서 제시된 해결 방안을 보고 탐색을 이용한 최소 값을 구하려고 하였으나 depth가 정해져 있지 않고 입력으로 주어진 n이 10억이 넘는 것을 보고 다른 방법을 생각해보게 되었다. n이 정해져 있고 최소 건전지 사용량도 정해져 있다고 생각하게 되었고 문제에서 주어진 5와 6을 이용해 가장 좋은 방법을 ..

[JAVA] 프로그래머스 : 방문 길이 (Summer/Winter Coding(~2018))

https://programmers.co.kr/learn/courses/30/lessons/49994?language=java 코딩테스트 연습 - 방문 길이 programmers.co.kr 구현 문제이다. 처음 가본 길이를 구하는 알고리즘을 구현하면 된다. 해결 방안 문제를 크게 보면 dirs를 돌면서 게임 캐릭터를 움직여준다. 캐릭터 움직이는 함수는 moveCharacter이다. 1. char형 dir에 의해 nx, ny를 정해준다. 2. nx, ny의 범위를 확인해준다. 2.1 구해진 nx, ny가 -5~5 => 0~10이 되므로 nx, ny 둘 중 하나라도 0~10 범위를 벗어나면 해당 과정은 아무것도 안한다. 2.2. nx, ny가 둘다 0~10 범위 안에 든다면 이동을 하게 되는데 boolean..

[JAVA] 프로그래머스 : 멀쩡한 사각형 (Summer/Winter Coding(2019))

https://programmers.co.kr/learn/courses/30/lessons/62048?language=java 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 �� programmers.co.kr 최대 공약수를 이용해서 구할 수 있을 거라고까지 밖에 생각 하지 못해서 다른 사람의 코드를 참고하였다. 해결 방안 간단하게 말해서 전체에서 선이 그어지는 구간(흰색 부분)을 빼는 문제이다. 하지만 선이 그어지는 부분을 알아내는 방법이 어려웠다. 세로와 가로를 보고 각각 3칸 2칸 간격으로 일정하게 잘려지는..

[JAVA] 프로그래머스 : 약수의 합 (Level 1)

https://programmers.co.kr/learn/courses/30/lessons/12928?language=java 코딩테스트 연습 - 약수의 합 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수 programmers.co.kr 해결 방안 1~n 사이 숫자로 나눴을 때 나머지가 0이 되는 경우는 모두 약수이다. 코드 class Solution { public int solution(int n) { int answer = 0; for(int i=1; i

[JAVA] 프로그래머스 : 소수 찾기 (Level 1)

https://programmers.co.kr/learn/courses/30/lessons/12921?language=java 코딩테스트 연습 - 소수 찾기 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 programmers.co.kr 해결 방안 주어진 숫자 n의 1~n 까지의 소수 갯수를 찾는 문제이다. 에라토스테네스의 체를 사용하여 i 가 소수인지 확인하였다. 코드 class Solution { public int solution(int n) { int answer = 0; for(int i=2; i