PS/BOJ
BOJ 10820 문자열 분석 [Java]
BOJ 10820 문자열 분석 - 문제 링크 https://www.acmicpc.net/problem/10820 - 문제 해설 문자열 N개가 들어오는데 N이 주어지지않는다. while문을 돌리는데 입력이 없으면 종료하도록 만들었다. 소문자, 대문자, 숫자, 공백의 횟수를 담을 크기가 4인 ans 배열을 만들었다. 입력 받은 문자열의 문자를 하나씩 살펴보며 소문자면 arr[0]을, 대문자면 arr[1]을, 숫자면 arr[2]를, 공백이면 arr[3]을 증가시켰다. - 코드 보기 import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Buffere..
BOJ 10809 알파벳 찾기 [Java]
BOJ 10809 알파벳 찾기 - 문제 링크 https://www.acmicpc.net/problem/10809 - 문제 해설 boj 10808 알파벳 개수 문제에서 조금 변형된 문제이다. 기본적인 동작 방식은 비슷하게 하였고 몇 가지를 추가하였다. cnt배열은 각 알파벳이 단어에 처음 등장하는 인덱스를 담는다. 알파벳 'a'부터 'z'까지 돌면서 검사하는 방식이다. 각각의 알파벳이 입력된 단어에 포함되는 경우, 첫 위치를 출력해야하므로 알파벳이 단어에서 발견되면 바로 다음 알파벳으로 넘어가도록 하였다. cnt배열이 0인 경우가 두 가지 경우가 있다. 알파벳이 단어에 포함되지 않아서 0인 경우와, 알파벳이 단어의 첫번째 글자로 등장해서 0인 경우이다. cnt배열의 값이 0인 ..
BOJ 10808 알파벳 개수 [Java]
BOJ 10808 알파벳 개수 - 문제 링크 https://www.acmicpc.net/problem/10808 - 문제 해설 a부터 z가 단어 S에 나온 횟수를 담는 배열 cnt를 만들어 문제를 풀었다. 배열 cnt의 인덱스 0~25는 각각 a~z에 해당한다. char a를 선언하고, a가 'a'~'z'까지 증가하며 입력된 단어에 있는지 검사하였다. 'a'가 아스키 코드로 97이기에 97을 빼주면, 알파벳에 해당하는 인덱스 값을 얻을 수 있다. - 코드 보기 import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader b..
BOJ 10866 덱 [Java]
BOJ 10866 덱 - 문제 링크 https://www.acmicpc.net/problem/10866 - 문제 해설 util.Deque를 이용하면 쉽게 풀 수 있는 문제이지만 덱을 구현해보는 것에 목적을 두고 풀었다. 명령 수가 n이면 최대로 커질 수 있는 덱의 크기가 n이다. 크기가 2n이고 가운데서 head와 tail이 시작하는 배열로 덱을 구현하였다. 크기가 n인 배열로 원형 큐처럼 덱을 구현을 할 수도 있지만, 그렇게하면 push하거나 pop할 때, 기존 원소들의 위치를 이동시켜줘야하는 등의 추가로 신경써야할 것이 많아져서 그렇게 하지 않았다. - 코드 보기 import java.io.*; import java.util.*; class Deque { int head; int tail; int a..
BOJ 10845 큐 [Java]
BOJ 10845 큐 - 문제 링크 https://www.acmicpc.net/problem/10845 - 문제 해설 util.Queue를 이용하면 쉽게 풀 수 있지만 큐를 구현하는 것을 목적으로 하고 풀었다. head는 큐의 맨 앞 원소의 인덱스이고, tail은 큐의 맨 뒤 원소 인덱스보다 1 큰 값이다. tail은 왜 큐의 맨 뒤 원소의 인덱스가 아닌 1을 더한 값인지는 큐에 원소가 1개만 들어 있는 경우를 생각해보면 쉽게 알 수 있다. 문자열끼리 비교할 때 == 연산자를 사용하면 안된다. == 연산자는 객체가 같은 지를 비교하여서 객체가 같다면 더 확인하지 않고 true를 반환한다. 문자열이 같은 지 비교하고자 한다면 equals()를 이용해야한다. - 코드 보기 import java.io.*; i..