java 205

5086. 배수와 약수 (자바, Java)

유클리드 호제법은 뒤에서 배워서, 그냥 무식하게 브루트-포스로 무식하게 반복문 돌려서 풀었다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while (true) { String str = br.readLine(); if (str.equals("0 0")..

백준 문제풀이 2022.10.10

3053. 택시 기하학 (자바, Java)

별 문제 아니다. 그냥 x축 혹은 y축과 평행한 방향으로, '좌표격자따라' 이동할 수 있다 생각하면 된다. 택시기하학의 정의에 따르면, 택시기하학에서의 원은 '정사각형'이 된다. 원점을 기준으로 하면, 마름모 모양이 되는 셈이다. 택시기하학의 원(=정사각형)에서, 지름 2r은 대각선의 길이가 된다. 한 변의 길이는 2^(1/2)r, 루트 2 * r이 되고, 따라서 택시기하학의 원의 면적은 2 * r^2이 된다. 유클리드 기하학에서 원의 넓이는 pi * r^2. 주의할 점은, 출력값을 int가 아닌 double로 출력해야 한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public ..

백준 문제풀이 2022.10.10

4153. 직각삼각형 (자바, Java)

이 문제를 마주했는데 못 풀겠다면, 피타고라스 정리를 모르거나, 거듭제곱 매소드를 모르거나 둘 중 하나이다. 피타고라스 정리는 직각삼각형의 빗변의 길이를 a, 나머지 두변을 각각 b, c라할때 a^2 = b^2 + c^2 이 성립한다. 따라서, if값에 해당 조건을 주고, 결과에 따라 출력문을 나눠주면 끝. 0 0 0 등장시 종결시켜주는 것도 잊지 말자. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static void main(St..

백준 문제풀이 2022.10.10

3009. 네 번째 점

'축에 평행한 직사각형' 이걸로 문제가 너무 쉬워졌다. 여러가지 방법이 있으나, 기왕이면 맵 자료형으로 풀면 쉬울듯하여 그걸로 풀었다. 브론즈 문제를 맵 자료형으로 푸니까 뭔가 닭잡는데 소잡는칼 쓴 기분... 마지막 꼭짓점은 1번씩만 나온 x, y좌표가 나와주면 된다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOExce..

백준 문제풀이 2022.10.10

1085. 직사각형에서 탈출

간단한 문제다. x축, y축방향으로밖에 이동못하는 경우 최단거리를 구하는 문제. x, y, w-x, h-y 중 가장 작은 값이 최단거리다. 4개의 배열을 만들어주고, 정렬해서 제일작은값(=오름차순으로 제일앞에 나오는값)을 출력해주면 끝. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedR..

백준 문제풀이 2022.10.10

11478. 서로 다른 부분 문자열의 개수 (자바, Java)

제한시간이 1초같아 촉박해보이지만, 문자열이 1000이하라 해볼만하다. 문자열 길이 1일때 n개, 2일때 n-1개, 3일떄 n-2개...n일때 1개 해서, 시간복잡도는 n(n+1)/2 이다. 따라서 n=1000을 넣어도 1초당 연산량인 10억개를 넘지 않아, 이중반복문을 써도 큰 제약이 없다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashSet; import java.util.Set; public class Main { public static void main(String[] args) throws IOException { BufferedRead..

백준 문제풀이 2022.10.10

1269. 대칭차집합 (자바, Java)

개념적으로 크게 어렵지 않다. 이걸 풀기 위해 검색하면서, 집합자료형인 set에 대해서 알게되었다. set 자료형은 array와 다르게, 순서가 없다는 점. 아직은 갓 알게된 터라, key값이 필요없는 map 자료형 느낌으로 쓰고있다. try 1. 이클립스에서는 성공했으나, 시간초과로 실패. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.HashSet; import java.util.StringTokenizer; public class Main { public static void main(String[] ..

백준 문제풀이 2022.10.10

1764. 듣보잡 (자바, Java)

이번에는 양쪽의 교집합을 이진탐색으로 구하는 문제. 그냥 HashMap 으로 풀었는데, 구글링해보니까 이진탐색으로 풀었던 경우도 보았다. 앞 집합에 있는 목록들로, 뒷 집합을 이진탐색하면서 찾아보는 식. 무언가 정공법으로 풀지 못해서 불-편했다. 하지만 이진탐색을 풀 기회는 앞으로도 많을 것이고, 뒷 문제는 이진탐색쪽으로 생각하기로 마음먹으며 그냥 넘어가기로 했다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util..

백준 문제풀이 2022.10.03

10816. 숫자 카드 2 (자바, Java)

이전문제 는 카드의 존재유무만 가렸다고 한다면, 이번 문제는 카드의 갯수를 구해야 하는 문제다. 역시나 마찬가지로 브루트 포스를 통하면 해결할 수는 있겠으나, 별 의미가 없어서 구글링으로 찾아보았다. 같은 값을 가진 방법을 세는 lowerbound와 upperbound에 대해 알게되었고, 양쪽의 차이를 빼줘서 갯수를 구할 수 있었다. 이전에 썼던 코드에서 조금만 추가하면 됐기에, 다소 수월하게 코딩할 수 있었다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class ..

백준 문제풀이 2022.10.03

1620. 나는야 포켓몬 마스터 이다솜

...문제 도입부가 포켓몬스터 프롤로그를 갖다 박았습니다. 너무 길어서 생략합니다. 재밌는 발상이긴한데, 조금 부담스러워요. 알고리즘에 머리싸매다 기분전환하고 싶었다고 이해합시다... 포켓몬 갓IP긴 하죠. 아무튼간에, 문제는 간단합니다. 문자열을 보고 (도감)번호를 캐치해서 출력하거나, (도감)번호를 보고 대응되는 문자열을 캐치하여 출력해야합니다. 보자마자 이전에 보았던 HashMap 자료형이 떠오르긴 했습니다...만, 문제는 제가 아직 key값을 추출하는 법을 몰랐습니다. 그러면 key를 통해 value는 추출할 수 있지만, value로 key값을 추출하는건 못하겠는데? 찾아봐도 뭔가 좀 어려웠어요. 그래서 하는수없이, 포기하고 원래 하던 고전적인 방식으로 풀었더니, 역시나 이클립스에서는 출력되나 백..

백준 문제풀이 2022.10.03