본문 바로가기

프로그래밍/백준알고리즘14

백준 1212번 자바 문제풀이 - 8진수 2진수 풀이 진법변환은 오랜만이라 처음 문제를 풀기위하여 8진수를 10진수로 변환 후 2진수로 변환하였다. 제출 결과는 "틀렸습니다.".... 테스트 케이스를 만들어 for문으로 돌려보아도 문제가 없기에 어디가 틀렸나 확인을 해보았더니, "수의 길이는 333,334 자리를 넘지 않는다." 라는 문장이 있었다.... 처음 수가 333,334까지인줄 알았으나, 수의 길이가 333,334를 넘지 않는다는 것이였다. 10진수로 바꾸기 위해 Integer형 변수에 저장을 했었기 때문에 틀렸다고 나왔다. BigInteger를 사용하면 시간초과가 날 것 같아 진법변환을 다시 찾아보았다. 8진수는 한자리씩 잘라 3자리의 2진수로 변경이 가능하다. 314의 경우 한자리씩 2진수로 변경하게 되면 다음과 같이 된다 3 = 011 1 =.. 2022. 3. 30.
백준 알고리즘 10250번 문제 풀이 - ACM 호텔 이 문제는 H(호텔의 층 수), W(각 층의 방 수), N(몇 번째 손님)를 입력받아 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 출력하는 문제이다. 손님은 엘레베이터 타는것을 신경쓰지 않기 때문에 102호 보다 601호를 선호한다고 합니다. 이 문제는 규칙을 찾을것도 없이 낮은 층 1호부터 순서대로 사람을 채워주면 되는 간단한 문제입니다. (문제를 풀어보니 W는 쓸곳이 없었습니다...) 우선 N번째 손님이 묵을 층을 구해줘야 합니다. 층 수는 N / H 가 0이 0이 아닐 경우 N / H 를 한 나머지가 층 수가 됩니다. ( 1호 부터 채우기 때문에 N % H = 손님이 묵을 층 수) int h = ( N % H == 0) ? H : N % H; 그 다음 손님이 묵을 호는 N%H == 0 이 .. 2019. 11. 29.
백준 알고리즘 1026번 풀이 - 보물 배열1[0] * 배열2[0] + ... + 배열1[N-1] * 배열2[N-1]의 값이 낮게 나오도록 B배열은 재배열 하지 말고 A배열만 재배열 하라고 한다. 그래서 쓸데없이 temp배열을 만들어서 풀었었는데, 생각해보니 정답만 잘 나오면 되는게 아닌가싶어 수정했다... A배열과 B배열 중 하나는 오름차순 하나는 내림차순으로 정렬을 하여 곱한값을 더하면 S의 최솟값이 나온다. 소스 import java.util.Scanner; public class Main { public static void main(String args[]){ Scanner s = new Scanner(System.in); int n=s.nextInt(); int tmp; int[] arr1 = new int[n]; int[] arr.. 2019. 9. 25.
백준 알고리즘 2750번 풀이 - 수 정렬하기[버블정렬] 정렬에는 여러가지가 있지만 간단하게 버블정렬을 이용하여 풀었다. 처음에는 정렬만 하면 되는줄 알고 풀었는데 실패가 떠서 보니 중복까지 제거해줘야한다.. 소스 import java.util.Scanner; public class Main { public static void main(String args[]){ Scanner s = new Scanner(System.in); int n = s.nextInt(); int m; int tmp; boolean flag=false; int[] arr = new int[n]; int k=0; for(int i=0;i 2019. 9. 25.