알고리즘/백준 문제 및 정답
문제 번호 2292번 : 벌집 - JAVA [자바]
문제 번호 2292번 : 벌집 - JAVA [자바]
2021.12.27https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 문제가 조금 어려워 보이지만 천천히 생각하면 무엇을 원하는지 금방 알 수 있습니다. 각 숫자는 1부터 바깥 테두리 형식으로 증가하면서 숫자가 이루어져 있습니다. 그리고 주어진 숫자가 몇번째 테두리에 있는지 물어보는 문제입니다. (여기서 테두리란 각 도형의 바깥을 감싸는 도영을 의미합니다. 밑에 두꺼운 글씨를 보시면 이해가 더 잘 되실 겁니다.) 1은 첫번째 테두리에 2 ~ 7은 2번째 테두리에 8~19는 ..
문제 번호 1712번 : 손익분기점 - JAVA [자바]
문제 번호 1712번 : 손익분기점 - JAVA [자바]
2021.12.26https://www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 일단 문제 이해가 잘 안돼서 한참을 봤습니다. 간단히 말하면 결국 고정 지출 + (병동지출 * 판매개수) 의 금액보다 노트북가격 * 판매개수의 금액이 커지는 판매 개수의 수를 구하라는 문제입니다. 두가지 방법을 사용해서 풀 수 있습니다. 1. 직관적으로 문제 그대로 코딩하는 방법 2. 부등호 식을 이용해서 문제를 푸는 방법 사실 1번은 시간이 오래 걸려서 백준에서는 정답으로 쳐주지를 않더라고요. 상황에..
문제 번호 1316번 : 그룹 단어 체커 - JAVA [자바]
문제 번호 1316번 : 그룹 단어 체커 - JAVA [자바]
2021.12.26https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 7단계 마지막 문제였습니다. 개인적으로 좀 어려웠던 문제였습니다. 알파벳 배열에 아스키 코드를 이용해서 문제를 해결하는게 조금 어색해서 방향을 못찾고 괜한 for문만 엄청 돌렸었습니다. 결국 https://st-lab.tistory.com/69 를 참고해서 풀었습니다. 감사합니다. 한 이틀은 고민했습니다. 어려웠던 만큼 정리를 조금 하도록 하겠습니다. 1. 바로 전..
문제 번호 2941번 : 크로아티아 알파벳 - JAVA [자바]
문제 번호 2941번 : 크로아티아 알파벳 - JAVA [자바]
2021.12.23https://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){ Scanner sc = new Scanner(System.in); String s = sc.next(); int count = s...
문제 번호 5622번 : 다이얼 - JAVA [자바]
문제 번호 5622번 : 다이얼 - JAVA [자바]
2021.12.23https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net switch문을 사용하여 간단하게 해걸하였습니다. 정답 import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String s = sc.nextLine(); int count = 0; for(int i = 0 ; i < s.length(); i++){ switch(s.charAt(i)){ case 'A' : case 'B' : ca..
문제 번호 2908번 : 상수 - JAVA [자바]
문제 번호 2908번 : 상수 - JAVA [자바]
2021.12.22https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 저는 형변환을 사용하여 문제를 풀었습니다. 별로 좋은 풀이법은 아닌거 같습니다. 코딩테스트 때 다 기억할 수 없을 꺼 같아서.. char 형을 String으로 변환하는 함수는 String.valueOf()입니다. String을 int형으로 변환하는 함수는 Integer.parseInt()입니다. 정답 import java.util.*; public class Main{ public static void mai..
문제 번호 1152번 : 단어의 개수 - JAVA [자바]
문제 번호 1152번 : 단어의 개수 - JAVA [자바]
2021.12.22https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net StringTokenizer을 사용하여 쉽게 해결할 수 있습니다. 정답 import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int count = 0; String s = sc.nextLine(); StringTokenizer stk = n..
6단계 문제 번호 1157번 : 단어 공부 - JAVA [자바]
6단계 문제 번호 1157번 : 단어 공부 - JAVA [자바]
2021.12.21https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 아스키 코드를 사용하지 않고 제 나름대로 만들어서 결과를 출력하는것까지는 성공했는데 백준에서는 시간 초과가 걸려서 정답으로 처리가 되지 않더라고요 결국에는 저도 아스키 코드르 사용하여서 해결하였습니다. 26개의 배열을 만들고 해당 알파벳이 출력될때마다 해당 배열이 1씩 증가하는 코드를 넣은 후 그 증가할때마다 최대값과 비교하여 증가한 값이 최대 값보다 크면 최대 값에 증가한 값을 넣고 결과에도 그 최대 값에 해당하는 알파벳을 넣습..
6단계 문제 번호 2675번 : 문자열 반복 - JAVA [자바]
6단계 문제 번호 2675번 : 문자열 반복 - JAVA [자바]
2021.12.20https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net 계속 해서 런타임 오류가 나서 고생을 좀 했습니다. nextLine()으로 문자열을 받게 되면 줄바꿈까지 입력받게 되서 런타임 오류가 난거 같습니다. "S가 공백으로 구분되어 주어진다." 라는 문제 조건 때무인 걸로 예상됩니다. next()로 수정하여서 풀었습니다. 정답 import java.util.*; public class Main{ public static void main(Str..
6단계 문제 번호 10809번 : 알파벳 찾기 - JAVA [자바]
6단계 문제 번호 10809번 : 알파벳 찾기 - JAVA [자바]
2021.12.20https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net indexOf를 사용하여 간단하게 풀 수 있는 문제입니다. for문이 char형으로도 반복된다는 걸 알고 있으면 좀 더 쉽게 풀 수 있습니다. 정답 import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String s = sc.nex..
6단계 문제 번호 11720번 : 숫자의 합 - JAVA [자바]
6단계 문제 번호 11720번 : 숫자의 합 - JAVA [자바]
2021.12.19https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net charAt을 사용하여 각 자리 숫자를 더해 주었습니다. 정답 import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); sc.nextLine(); String num = sc.nextLine(); int sum = 0; for(int i = 0; i < n; i++){ sum += num.ch..
6단계 문제 번호 11654번 : 아스키 코드 - JAVA [자바]
6단계 문제 번호 11654번 : 아스키 코드 - JAVA [자바]
2021.12.19https://www.acmicpc.net/problem/11654 11654번: 아스키 코드 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. www.acmicpc.net charAt(0)을 사용하여 아스키 코드를 출력 할 수 있습니다.(원리는 저도 잘 모릅니다...ㅎ) 정답 import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.next().charAt(0); System.out.println(n); } }