java 205

10757. 큰 수 A+B (자바, Java)

10^10000은 int 뿐 아니라 long, double로도 커버가 안 되는 수라서, 이런 수를 커버하려면 다른 자료형을 써야합니다. 저는 BigInteger를 사용했습니다. 앞선 문제들이 모두 컴퓨터가 아닌 수학문제 쪽에 가까웠다면, 이 문제는 정 반대네요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputS..

2839. 설탕 배달 (자바, Java)

처음 어려움을 느낀 이유는, '규칙성' 에 대한 고민이었습니다. 최적화된 수가 case by case 아닌가? 하는 고민이었죠. 적은 봉지수를 쓰기 위해서는, 5kg봉지를 최대한 써야합니다. 하지만, 상황에 따라 5kg 봉지를 적게 써야할 때가 있습니다. 가령 11kg짜리 봉지는, 5kg 1개에 3kg 2개를 써야하지, 5kg 2봉지로는 해결할 수 없죠. 제 풀이는 다음과 같습니다. 1. 5kg봉지를 최대한 써봄 (n/5) 2. 남은양이 3kg으로 처리되나? -> 되면 정답출력. 3. 안될 경우, for 구문으로 돌아와서, 5kg봉지 사용수를 하나 줄임. 4. 2를 반복, 안되면 3으로 돌아감. 5. for 구문을 전부 했는데도 정답출력이 안 될 경우, -1을 출력. 이렇게, 5kg 봉지를 최대한 쓰면서..

2775. 부녀회장이 될테야 (자바, Java)

이것도 수열문제입니다. 0층의 i호에 i명이 산다고 했으니, 0층은 1호부터 1,2,3,4...명이 산다고 할 수 있죠. 그후 한층씩 올려가면서 규칙성을 파악하고, 수열로 생각하면서 규칙성에 맞는 k층 n호의 수를 구하면 됩니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int t = Integer.parseI..

10250. ACM 호텔 (자바, Java)

지문이 긴 편이고, 그림자료까지 있어 겁먹을지도 모릅니다만, 수학난이도는 오히려 앞선 문제들보다 쉽습니다. 머릿속에서 순번을 생각할 수 있다면, 그리 어려운 문제는 아닐겁니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int t = Integer.parseInt(br.readLine()); String str;..

2869. 달팽이는 올라가고 싶다. (자바, Java)

처음에는 쉬워보이는데, 큰 문제가 있습니다. 낮에 올라가서 도착하게되면, 밤에 미끄러지는 부분은 계산하지 않는 것이지요. 이 부분을 어떻게 처리할것이냐? 에 대한 문제라고 보시면 되겠습니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Java2869 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); String str2[..

1193. 분수찾기 (자바, Java)

기본수학 파트가 다 그렇지만, 프로그래밍이 어려운 문제가 아니라, 수학이 힘든 문제입니다. 수열로 풀어주면 됩니다. 분자와 분모의 합이 같은 그룹을 기준으로해서, 각 첫항 혹은 끝항을 기준으로 잡아서, 한 칸 전진할 때마다, 분자분모를 1씩 바꿔줍니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static int[] n(int an) { int[] result = new int[2]; int stand; for (int i=1; ; i++) { stand = (i * (i+1))/2; if (an

2292. 벌집 (자바, Java)

이전 문제보다는 수학적으로 까다로운 문제인데, 수열문제입니다. 5시방향으로 지나가는 방향을 잘 보시죠. 1, 7, 19, 37, 61...계차수열입니다. 계차수열은 수열의 앞뒤 차이인 계차를 새로운 수열로 만든 것인데, 1, 7, 19, 37, 61...의 계차수열은 6, 12, 18, 24...각 항이 6의 배수인 등차수열입니다. 참, 왜 5시 방향쪽을 봐야하는지 설명을 안했군요. 1부터 한칸씩 전진했을때, 같은 이동만큼 전진하는 그룹은 육각형 모양을 띄게되고, 그 그룹 중 가장 큰 숫자가 5시방향에 모여있습니다. 예를들어, 1칸 전진했을 때, 2~7중에 가장 큰 것은 7, 2칸 전진했을 때 8~19사이에서 가장 큰 수는 19...이런식이죠. 따라서 앞서 구한 벌집 수열에서, 해당 숫자보다 작다면 거기..

1712. 손익분기점 (자바, Java)

기본수학1로 넘어왔습니다. 개인적으로, 기본수학 부분은 그동안 배워왔던 기본적인 문법 및 기능들을 이용해, 간단한 수학문제를 푸는 파트라고 이해하시면 될 것 같습니다. 추가적인 컴퓨터지식보다, 응용편이랄까요. 딱히 할 말은 없는데, 마진이 남지 않는 구조면 -1을 출력한다는 점만 주의하시면 되겠습니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Java1712 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStr..

1316. 그룹 단어 체커 (자바, Java)

이것도 이전 크로아티아 알파벳과 함께, 제 골머리 좀 썩혔습니다. 이어지는지 끊어지는지에 대한 판단을 어떻게 하게 할것이냐, 그게 제일 고민이었어요. 단순히 앞뒤 비교로 퉁치기엔, 이어지는 연속된 숫자는 해당 안 될 수 있고, aba처럼 바로 옆에 오는 것이면 몰라도, asddgsga 처럼 한참 후에야 중복되는 경우도 있으니까요. 결국 알파벳에 대응되는 배열로 만들어서, 각 알파벳이 다시 나올때마다 해당되는 위치의 배열의 카운트를 늘리는 방식으로 해결했습니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(S..

2941. 크로아티아 알파벳 (자바, Java)

이거 많이 빡셌습니다. 앞 문제에서 언급한대로 불규칙성을 넣었는데, 첫번째로, 다 두글자인데 dz= 하나만 세글자라는 점, dz=과 z=이 겹쳐서, 잘못 짜면 이걸 같이 카운팅해버립니다. 앞선 문제의 교훈으로, 비교적 무식하고 우직한 방법으로 풀었습니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s..