본문 바로가기

분류 전체보기101

[java] 백준 1735 분수 합 분수의 합을 기약분수로 구하는 문제이다. 기약분수란 더 이상 약분이 되지 않는 분수를 의미한다. 그렇다면 기약분수는 어떻게 구하는 것일까? 각 수가 더 이상 나누어지지 않기 위해서는 통분한 후 최대공약수로 나누면 해결된다. 최대공약수를 구하는 공식은 아래 글에 정리되어 있다. https://miacoder.tistory.com/42 [java] 백준 13241 최소공배수 자바 이 풀이는 유클리드 호제법을 사용하여 최대공약수와 최소공배수를 구하는 문제이다. 유클리드 호제법이란 최대공약수를 구하는 공식이다. 위와 같이 a, b가 있을 때 b가 0이 될 때 까지 재귀함 miacoder.tistory.com 예를 들어보자 6/10 과 5/15가 있다. 여기서 각 값을 통분한다. 그렇다면 90/150, 50/15.. 2024. 1. 26.
[java] 백준 13241 최소공배수 자바 이 풀이는 유클리드 호제법을 사용하여 최대공약수와 최소공배수를 구하는 문제이다. 유클리드 호제법이란 최대공약수를 구하는 공식이다. 위와 같이 a, b가 있을 때 b가 0이 될 때 까지 재귀함수로 돌린다는 것을 알 수 있다. 위 공식을 통해 입력받은 값의 최대공약수를 구할 수 있다. 그렇다면 최소공배수는 어떻게 구하는가? 최소공배수는 a * b / gcd(a, b)로 계산할 수 있다. 코드로 풀어보면 다음과 같다. import java.util.*; import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { Bu.. 2024. 1. 26.
백준 11478 서로 다른 부분 문자열의 개수 간단한듯 어려운 문제였다. 하지만 한 메소드를 안다면 간단하게 해결할 수 있다. 우선 부분 문자열을 구하는 방법을 알아보자. 만약 abcde가 입력된다면 a b c d e ab bc cd de abc bcd cde abcd bcde abcde 이런식으로 나온다. 저 순서대로 출력하는 것은 반복문으로 처리하기에는 복잡하다. 반복문을 통해 해결하기에는 출력을 시작하는 자리가 지속적으로 변해 출력하기가 매우 까다롭다. 그렇다면 다른 규칙을 가지고 출력해보는 것을 생각해본다. 출력을 시작하는 자리를 고정해 본다. a ab abc abcd abcde b bc bcd bcde c cd cde d de e 위와 같은 방식을 사용해도 모든 경우의 수가 나오는 것을 알 수 있다. 이제 조금 감이 잡히기 시작할 것이다. .. 2024. 1. 24.
백준 1269 대칭 차집합 자바 java 대칭 차집합을 구하는 문제이다. 문제에서 요구하는 것은 두 개의 집합 A, B가 있다고 할 때 A, B에 공통적으로 들어가는 값을 제외한 A, B의 값의 개수의 합을 구하는 것이다. 즉 겹치는 값의 개수를 구하면 간단하다. 해당 값이 존재하는지 알아보기 위해서는 contain함수를 활용하면 좋을 것 같다.\ 우선 HashMap을 사용하여 풀어 보았다. import java.util.*; import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReade.. 2024. 1. 24.
백준 1764 듣보잡 자바 java 문제를 읽어본 처음 N. M을 입력받는데 반해 N번째 까지 듣도 못한사람, N + 2번째까지 보도 못한사람을 입력받으라고해 혼란이 있었다. 하지만 이 의미는 결국 첫 번째 줄은 N, M을 입력받으므로 N번만큼 듣도 못한사람을, 이후 M번 보도 못한사람을 입력받으라는 의미였다. 왜 이렇게 쓴건지는 잘 모르겠다. 듣도 못한사람, 보도못한사람 2가지 조건을 충족해야하기에, 입력받을 때 마다 value를 + 1 하는 방법을 선택했다. 즉 듣도 보도 못한사람은 value값이 2일 것이다. 듣도 보도 못한사람이 몇 명인지도 출력해야 하므로 보도 못한사람을 입력받을 때 count에 몇명인지 저장한다. TreeMap를 사용하여 사전순으로 정렬한다. for-each문과 keySet를 적절히 사용하여 듣도 보도 못한 사람.. 2024. 1. 24.
백준 10816 숫자카드2 자바 java 이번 문제의 어려웠던 점은 HashMap의 키는 중복된 값을 허용하지 않는다는 점이다. 따라서 HashMap에 바로 값을 넣을수는 없다. 그렇다면 HashMap의 특성을 이용하여 중복되는 수를 세보자. HashMap는 중복된 키가 입력되면 오류가 나는 것이 아닌 해당 키가 업데이트된다. 만약 (A, 10)이 있었다면 (A, 5)가 들어오면 (A, 5)로 해당 value가 업데이트된다. 그렇다면 동일한 키가 들어올 때 마다 기존 value에 + 1을 하면 중복된 키의 개수를 셀 수 있을 것이다. 이 특성을 바탕으로 코드를 작성해 보자. import java.util.*; import java.io.BufferedReader; import java.io.InputStreamReader; public clas.. 2024. 1. 23.