문제풀이 190

[JAVA] 백준 1011번 Fly me to the Alpha Centauri : 부등식과 반복문 3

1011번: Fly me to the Alpha Centauri 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행 www.acmicpc.net 1. 문제 추상화 장치를 한 번 작동시킬 때, 이전 속도보다 1 증가, 유지, 1 감소가 가능할 때, X지점에서 Y 지점까지 장치를 최소한으로 몇 번 작동해야 도착할 수 있는가? ( 단, 처음과 끝의 속도는 1광년이다. ) 2. 알고리즘 개인적으로 어려웠다. 이런 수열 문제는 귀찮더라도 0부터 하나씩 수를 나열하며 규칙을 찾는 것이 정도(正道)이다. 이런 노력없이 대충 문제의 조건으로만 규칙성을 찾으려 한다면 요행을 ..

문제풀이 2021.07.20

[JAVA] 백준 10757번 큰 수 A + B : BigInteger, StringBuilder

10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 1. 문제 추상화 정수 자료형으로 담을 수 없는 두 큰 정수의 합을 구하시오. 2. 알고리즘 long이나 int 같은 정수 자료형이 담을 수 없을 정도로 큰 수는 '문자열'을 이용하여 계산해야한다. 첫 번째 방법 : StringBuilder 1. 문자열로 두 수를 입력받는다. 2. StringBuilder의 reverse() 메소드를 활용하여, 문자열을 역순으로 정렬한다. 3. 자릿수가 적은 수는 적은만큼 0으로 채운다. EX) A : 4321 , B : 21 => A : 4321 , B : 2100 4. 문자열을 0부터 하나씩 추출하여 합한다. 5. 합이 10이상이면 올..

문제풀이 2021.07.19

[JAVA] 백준 2839번 설탕 배달 : 함수

2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 1. 문제 추상화 3kg, 5kg 설탕봉지를 사용하여, 정확히 Nkg 설탕을 옮길 때, 봉지의 수를 최소화해라. 2. 알고리즘 3kg 봉지의 개수 : a 5kg 봉지의 개수 : b 옮겨야 할 설탕무게 : N (kg) 그러므로, 3a + 5b = N 이 성립한다. a의 개수가 정해지면 b의 개수는 '자동으로' 정해진다. ( 함수 종속 ) N을 11이라 가정하자. b가 0일때, a는 최대가 된다. 그러므로 0

문제풀이 2021.07.18

[JAVA] 백준 2869번 달팽이는 올라가고 싶다

2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 1. 문제 추상화 1회에 A만큼 증가한 후 B만큼 감소한다. 몇 회만에 V에 도달할까? 2. 제약 조건 시간 제한 : 0.15초 3. 알고리즘 이전과 이후가 존재하는 문제이다. 그러므로 '반복문'이 적합하다. 그러나 '시간 제한' 있다. 반복문을 사용하면 시간제한에 걸린다. 고로, 연산으로 풀어야 한다. 문제를 풀긴 했지만 인터넷을 찾아보니 더 적합한 풀이법이 있었다. 그러므로 두 가지 풀이법을 소개하려 한다. 1. 나의 풀이법 A = 10, B = 2, V = 100 이라고 가정하자. 달팽이는 낮에 10을 갔다가 2를..

문제풀이 2021.07.16

[JAVA] 백준 1193번 분수찾기 : 부등식과 반복문 2

1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 1. 문제 추상화 수열문제는 규칙을 찾는 문제이다. 배열의 인덱스가 지그재그로 부여된다. layer 인덱스 1층 1 2층 2 3 ( 하향 ) 3층 4 5 6 ( 상향 ) 4층 7 8 9 10 ( 하향 ) 5층 11 12 13 14 15 ( 상향 ) 이때, 입력된 인덱스가 가리키는 분수를 구하시오. 2. 알고리즘 1. 일정한 규칙에 따라 상향과 하향이 반복된다. 2. 입력값이 어느 범위에 포함되는지 알아야 한다. 3. 범위는 부등식이다. 4. 부등식 계산은 반복문을 사용한다. 5. 범위를 파악하면, 범위의 최대 인덱스가 가리키는 분수를 구한다. 6. 범위의 최대 인덱스와 입력된 인덱스 사이의 차..

문제풀이 2021.07.15

[JAVA] 백준 2292번 벌집 : 부등식과 반복문 1

2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 1. 문제 추상화 벌집은 정육각형을 동일한 정육각형으로 한 층씩 둘러 쌓아서 만든다. 한 층에 속한 정육각형들은 중심에서 떨어진 거리가 모두 동일하다. 그러므로 입력받은 번호의 정육각형이 몇 번째 층에 속하는지 구하라. 2. 알고리즘 층(n) 최솟값 최댓값 1층 x 1 2층 2 7 3층 8 19 4층 20 37 5층 38 61 . . . . . . 1. 각 층(n)의 최대값의 수열의 공차는 6의 등비수열을 이룬다. 1 7(1+6) 19(7+6*2) 31(19+6*3) ...

문제풀이 2021.07.15

[JAVA] 백준 1316번 그룹단어 체커 : 중복값

1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 1. 문제 추상화 1차 추상화 그룹단어란 연속된 문자로 이루어진 단어를 의미한다. 만약 연속되었던 문자가 한번 더 연속되면 그룹단어가 아니다. 2차 추상화 입력받은 영단어에서 문자가 중복되어 연속되지 않은 그룹단어의 개수를 구하시오. 2. 알고리즘 이 문제는 간단히 말해서 중복체크 문제이다. 첫 번째 방법 HashSet 이용하기 1. 입력받은 문자열을 한 문자씩 체크한다. (for문) 2. 문자가 변하는 횟수를 센다. (count..

문제풀이 2021.07.13

[JAVA] 백준 5622번 크로아티아 알파벳 : 문자열 탐색

2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 1. 문제 추상화 입력받은 문자열에서 크로아티아 문자가 사용된 횟수를 구하시오. 2. 알고리즘 첫 번째 방법 String API 이용하기 ( replaceAll 메소드 ) 두 번째 방법 if- else if 문으로 탐색하기 3. 풀이 첫 번째 방법 import java.util.Scanner; public class Main { public static void main(String[] args) { String[] croa..

문제풀이/String 2021.07.13

[JAVA] 백준 5622번 다이얼 : Switch문

5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net 1. 문제 추상화 입력된 문자열의 각 문자와 대응되는 정수와 대응하는 시간의 총합을 구하시오 2. 알고리즘 첫 번째 방법 Swtich 문 사용하기 두 번째 방법 아스키코드를 활용하여 if-elseif문 구현하기 3. 풀이 첫번째 방법 ( Switch문 ) import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String data = sc.next(); int timeForCall ..

문제풀이 2021.07.12