Algorithm/BaekJoon 8

[백준] 1919: 에너그램 만들기

문제 https://www.acmicpc.net/problem/1919 1919번: 애너그램 만들기 두 영어 단어가 철자의 순서를 뒤바꾸어 같아질 수 있을 때, 그러한 두 단어를 서로 애너그램 관계에 있다고 한다. 예를 들면 occurs 라는 영어 단어와 succor 는 서로 애너그램 관계에 있는데, occurs www.acmicpc.net 문제 풀이 1. 입력받은 두 문자열의 알파벳 개수를 저장할 두 개의 int형 배열(알파벳 수만큼의 크기)을 선언한다. 2. 입력받은 두 문자열을 전부 문자 배열로 바꾼다. 3. 전부 소문자이기에 대/소문자를 구별할 필요는 없으며, int형 배열 인덱스를 '문자 배열의 아스키 코드 값'을 이용해 접근한다. 4. 두 개의 int형 배열을 돌면서 값을 비교해 개수가 같은 ..

Algorithm/BaekJoon 2023.08.03

[백준] 9020: 골드바흐의 추측

문제 https://www.acmicpc.net/problem/9020 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net 문제 풀이 1. 문제에서 n의 범위가 10,000까지라고 나와있기에 해당 값을 마지막 인덱스로 갖는 배열을 만들어 에라토스테네스의 체로 소수를 판별해놓는다. 2. 에라토스테네스의 체의 구현에서 중요한 부분은 범위 값이 마지막 인덱스이므로 이 값을 N이라 했을 때 N + 1을 배열의 크기로 갖는 배열을 선언한다. 3. 그리고 for문에서 N의 제곱근 값까지 반복해서 해당 값..

Algorithm/BaekJoon 2023.02.14

[백준] 1193: 분수찾기

문제 https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 문제 풀이 https://hoxjeong.tistory.com/51 [백준] 2292: 벌집 문제 https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 hoxjeong.tistory.com 이 문제를 푼 후에 풀어서 그런지 2292번을 기반으로 사고를 하게 되었고, 이 문제의 응용 버전이 1193번이라고 느낀다. 1. 1/1 (1) 2. 2/1 (3) ..

Algorithm/BaekJoon 2023.02.10

[백준] 2292: 벌집

문제 https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 문제 풀이 1. 1 (1) 2. 2 ~ 7 (6) 3. 8 ~ 19 (12) 4. 20 ~ 37 (18) 5. 38 ~ 61 (24) 6. 62 ~ 93 (30) 실제로 노트에 끄적였던 내용이다. 가장 앞에 인덱스 1,2,3 .. 이 출력되면 된다. 규칙은 금방 발견했지만 식을 명확히 세우지 못해서 오랜 시간 골머리를 앓았다. 그 이유는 1, 7, 19, 37, 61 자체가 계차수열인데 나는 노트에 ..

Algorithm/BaekJoon 2023.02.10

[백준] 2941: 크로아티아 알파벳

문제 https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 문제 풀이 처음 문제를 봤을 때 어떤 풀이 방법으로 해결해야 하나 싶어 지레 겁을 먹었지만 이 문제 풀이는 별다른 방법보다 그냥 하면 되는 것 같다. 8개의 조건 뿐이라 각각 if문 작성하는 것이 어려운 일은 아니었다. 1. 문자열을 입력받고 split 함수로 문자열 배열을 만든다. 2. 문자열 배열의 인덱스 하나씩 접근하여 크로아티아 알파벳의 조건에 부..

Algorithm/BaekJoon 2023.02.08

[백준] 1157: 단어 공부

문제 https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 문제 풀이 알고리즘은 C로만 많이 풀었어서 모르고 있던 사실이 있다. Java에는 소문자, 대문자로 전부 변환해주는 메소드가 있다는 점이다. 이를 활용해서 문제를 풀면 아스키 코드로 대문자, 소문자를 따로 따지지 않아도 돼서 편리하다. 1. 입력받은 문자열을 전부 대문자로 바꿔 저장한다. 2. 전부 대문자로 변환된 문자열로 문자열 배열을 만든다. 3. 각 알파벳이 몇 번 나오는지 세기 위한 알파벳 개수(26개)의 크기를 가진..

Algorithm/BaekJoon 2023.02.08

[백준] 10973: 이전 순열 (자바/Java)

문제 https://www.acmicpc.net/problem/10973 10973번: 이전 순열 첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 문제 풀이 주어진 순열의 이전 순열을 구하기만 하면 된다. 이전 순열을 구하는 방법은 다음과 같다. 1. p[i-1] > p[i] 만족하는 가장 큰 i를 찾는다. 2. j >= i 면서 p[j] < p[i-1] 만족하는 가장 큰 j를 찾는다. 3. p[i-1] 과 p[j] 를 swap한다. 4. p[i] 부터 순열을 뒤집는다. 내림차순으로. (i-1이 바뀌었으므로 i부터 재정렬 한다고 생각하면 됨) 코드 import java.io.BufferedR..

Algorithm/BaekJoon 2022.11.02

[백준] 10972: 다음 순열 (자바/Java)

문제 https://www.acmicpc.net/problem/10972 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 문제 풀이 주어진 순열의 다음 순열을 구하기만 하면 된다. 다음 순열을 구하는 방법은 다음과 같다. 1. p[i-1] = i 면서 p[j] > p[i-1] 만족하는 가장 큰 j를 찾는다. 3. p[i-1] 과 p[j] 를 swap한다. 4. p[i] 부터 순열을 뒤집는다. 오름차순으로. (i-1이 바뀌었으므로 i부터 재정렬 한다고 생각하면 됨) 코드 import java.io.BufferedRea..

Algorithm/BaekJoon 2022.11.02