본문 바로가기

전체 글1068

[자바] 백준 6220 - Making Change (java) 문제 : boj6220 필요 알고리즘 개념 동적 계획법 (DP; Dynamic Programming) DP로 효율적으로 풀 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 얼핏 큰 동전부터 최대한 사용하면 가능할 것이라 생각할 수 있다. 예를들어 예시 1의 경우 25, 50, 10, 1, 5원 이므로 큰 동전부터로 정렬하면 50, 25, 10, 5, 1 이다. 차례대로 사용해서 93 - 50원, 43 - 2.. 2022. 10. 13.
[자바] 백준 2921 - 도미노 (java) 문제 : boj2921 필요 알고리즘 개념 구현 규칙을 찾아 2중 반복문으로 구현해주면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 N=2, 3, 4 일 경우를 그려보면 아래와 같다. 즉, 윗줄을 i로 두고, 아랫줄을 j로 뒀을 때, 아래 코드처럼 2중 반복문을 통해 i와 j를 합계에 더해주면 된다. for (int i = 0; i 2022. 10. 12.
[자바] 백준 25704 - 출석 이벤트 (java) 문제 : boj25704 필요 알고리즘 개념 사칙연산, 수학 뺄셈, 나눗셈을 할 줄 알면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 코드 설계를 이쁘게 해서 구현만 잘 해주면 된다. 이 때, P는 항상 100의 배수이므로 10%, 25% 할인 쿠폰 적용 후에 int로 변경해줘도 소수점 문제 없이 정수로 떨어지게 된다. 내 경우에 코드를 어떻게 구성했는지는 이하의 주석을 봐보자. int n = Integer... 2022. 10. 11.
[자바] 백준 20353 - Atrium (java) 문제 : boj20353 필요 알고리즘 개념 기하학, 수학 정사각형의 넓이를 어떻게 구하는지 알고 있다면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 정사각형의 넓이는 한 변의 길이의 제곱으로 구할 수 있다. 한 변의 길이를 x라 한다면 넓이는 x^2이다. 이 문제에서는 넓이가 주어지고, 원하는건 4x 이다. 따라서 '4*sqrt(입력으로 주어진 넓이)'을 출력해주면 된다. 자바에서 제곱근은 Math.sqrt.. 2022. 10. 10.
[자바] 백준 1402 - 아무래도이문제는A번난이도인것같다 (java) 문제 : boj1402 필요 알고리즘 개념 애드 혹(AD HOC) 정형화된 방식이 존재하지 않고 이 문제만의 아이디어를 생각해내야 한다. 이하 애드혹에 대한 위키 내용이다. "이것을 위해" 즉 "특별한 목적을 위해서"라는 뜻의 라틴어로, 일반적으로 다음을 나타낸다. 1. 특정한 문제나 일을 위해 만들어진 관습적인 해결책 2. 일반화할 수 없는 해결책 3. 어떤 다른 목적에 적응시킬 수 없는 해결책 ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 .. 2022. 10. 9.
[자바] 백준 24309 - РАВЕНСТВО (java) 문제 : boj24309 필요 알고리즘 개념 큰 수 표현, 사칙연산 간단한 사칙연산인데 문제는 엄청나게 큰 수로 표현 가능해야한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 결론적으로는 a,b,c를 입력받은 후 b-c를 a로 나눈 값을 출력해주면 된다(구글번역기 돌리면 bc/a 가 답인 것으로 판단되는데, 실제론 (b-c)/a가 원하는 답이다.). 문제는 c,b가 10^100이라는 어마무시한 수까지 가능하고, a도 10.. 2022. 10. 8.
[자바] 백준 25601 - 자바의 형변환 (java) 문제 : boj25601 필요 알고리즘 개념 그래프 탐색 (bfs, dfs) 그래프 탐색을 할 수 있어야 한다. bfs, dfs 등 해시를 사용한 집합과 맵 String에 대한 간선 표현을 위해 HashMap 등의 자료구조를 사용할 수 있어야 한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 이게 뭔가 복잡해보일 수 있는데, 결국 그냥 그래프 정점과 간선이 주어지고 특정 지점에서 다른 지점으로 그래프 탐색이 가능하냐고 묻.. 2022. 10. 7.
[자바] 백준 3043 - 장난감 탱크 (java) 문제 : boj3043 필요 알고리즘 개념 그리디 알고리즘 논리적으로 최선의 경우를 만드는 과정을 잘 생각해 규칙을 정하면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 솔직히 그리디쪽은 티어가 좀 애매한것 같다. 일단 풀이 생각하는 과정은 개인적으로 실버4인 25379번(피하자) 보다 쉬웠다. 다만 구현은 확실히 이 문제가 더 어렵긴 하다. 그렇다고 플래 받을 정도는 아닌 것 같아서 좀 애매한 것 같다. 아무.. 2022. 10. 6.
[자바] 백준 25379 - 피하자 (java) 문제 : boj25379 필요 알고리즘 개념 그리디 알고리즘 논리적으로 어떻게 하는게 항상 최선일지 잘 생각해 규칙을 잘 정해보면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 그리디 문제이니, 내가 이 문제를 풀면서 생각한 흐름 그대로 풀이로 쓰는게 나을 것 같다. 1. 문제에서 요구하는 '홀수와 짝수가 인접한 경우가 최대 1번 등장하도록 하는 시행' 은 결국 '모든 짝수가 왼쪽이고 모든 홀수가 오른쪽' 이거.. 2022. 10. 5.
[자바] 백준 3733 - Shares (java) 문제 : boj3733 필요 알고리즘 개념 사칙연산, 수학, 구현 입력을 받아 간단한 사칙연산을 해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 입력 갯수에 제한이 없으므로, EOF(end of file) 까지 입력을 받아야 한다. BufferedReader로 입력을 받는 경우, 입력값이 null이라면 EOF이다. 문제 자체는 간단한데, N과 S를 입력으로 받은 후 S/(N+1)을 해주면 된다. 이 때 소수점은 .. 2022. 10. 4.