Problem Solving
[백준, BOJ 2292] 벌집 (java)
출처-https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌�� www.acmicpc.net 내 생각 위의 그림에서 각각 다른 색으로 층을 나눠 보았다. 다음 그림을 표로 정리하면 아래와 같다. 층 현재 층의 육각형의 개수 전체 층의 육각형의 개수 1 1 1 2 6 7 3 12 19 4 18 37 5 24 61 ~ ~ ~ 이 표에서 알 수 있는 사실은 각 층은 전의 층보다 6개만큼의 육각형이 더 있다. 각 면에서 하나씩 육각형이 더 생기는 구조이다. 6개의 면에서 하나씩 더 생기므로 층이..
[백준, BOJ 2839] 설탕 배달 (java)
출처-https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그�� www.acmicpc.net 내 생각 : 우선 3kg 봉지보다 5kg 봉지가 더 많을 수록 좋다. 하지만 3kg 봉지를 가져가야만 nkg을 맞출 수 있는 경우가 있다. 그래서 남은 kg이 5의 배수가 될 때까지 3을 빼준다. 하지만 3을 계속 빼도 5의 배수가 되지 않고 음수가 되는 경우에는 5와 3으로 n을 만들 수 없는 경우이다. 이럴 경우에는 -1을 출력해준다. import java.util.*; public class ..
[백준, BOJ 1712] 손익분기점 (java)
출처-https://www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 내 생각 : 우선 처음에는 n을 구할 때 while (a+b*n>=c*n) n++; 를 사용해서 n을 구했었다. 이 경우에는 시간 초과가 떴다. 따라서 반복문을 쓰지 않고 n=a/(c-b)+1을 이용해 n을 구했다. 그런데 문제 조건 중에 손익분기점이 존재하지 않으면 -1을 출력한다는 조건을 보지 못했다. 손익분기점이 존재하지 않는 경우는 b가 c보다 같거나 크다면 절대로 손익분기점이 생길 수 없..
[백준, BOJ 1316] 그룹 단어 체커 (java)
출처-https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때� www.acmicpc.net 내 생각 : 처음에 문제를 이해하지 못했었다. 그래서 다른 분들의 문제 해석을 참고하여 문제를 이해했다. 한 단어 aaccbbc가 있을 때, c가 맨 처음 나온 c와 연속해서 오지 않고 다른 문자가 나온 다음에 다시 나온다. 이럴 경우 그룹 단어가 아니다. aacccbb 같은 경우에, 모든 문자들이 자신과 같은 문자와는 연속해서 나오고 있다. 이럴 경우에는 ..
[백준, BOJ 2941] 크로아티아 알파벳 (java)
출처-https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); String cta[]= {"c=","c-","dz=","d-","lj","nj",..
[백준, BOJ 5622] 다이얼 (java)
출처-https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어는 2글자~15글자로 이루어져 있다. www.acmicpc.net import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); String s=scan.next(); int time=0; for (int i=0;i
[백준, BOJ 2908] 상수 (java)
출처-https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 � www.acmicpc.net import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); int a=scan.nextInt(); int b=scan.nextInt(); int max; if ((a%10)>(b%10)) ..
[백준, BOJ 1152] 단어의 개수 (java)
출처-https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 � www.acmicpc.net 내 생각 : 이 문제에서 주의해야 할 점은 아무것도 입력하지 않았을 때 0을 출력해주어야 한다는 점이다. 따라서 문자열을 공백으로 나누기 전에 문자열이 비었는지 String 클래스의 isEmpty() 메소드로 확인해 주어야 한다. import java.util.*; public class Main { public static void main(String[] args) { // TOD..
[백준, BOJ 1157] 단어 공부 (java)
출처-https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); String s=scan.next(); int arr[]=new int[26]; for (int i=0;i=65)&&(c
[백준, BOJ 2675] 문자열 반복 (java)
출처-https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); int t=scan.nextInt(); int r[]=new int[t]; String s[]=new Strin..