문자열 110

[Java] 토큰으로 분리하는 StringTokenizer

Java에서 제공하는 클래스인 `StringTokenizer`는 문자열의 형태를 지정된 구분자(delimiter)를 기준으로 하여 토큰(token) 형식으로 분리하는 역할을 한다. 이 클래스는 주로 텍스트 데이터를 파싱하거나 분리할 때 사용된다. `StingTokenizer`는 간단한 문자열 파싱에 유용하지만, 더 복잡한 문자열 처리는 String의 `split()` 메서드나 정규식을 사용하는 것이 더 적합할 수 있다. StringTokenizer 주요 메서드 hasMoreTokens(): 아직 처리하지 않은 토큰이 남아있는지 여부를 반환 nextToken(): 다음 토큰을 반환하고 내부 포인터를 다음으로 이동시킴 nextToken(String delimiter): 지정된 delimiter를 사용하여 다..

알아가기/Java 2023.08.27

[Java] 백준 풀기 10820 - 문자열 분석

자바 백준 10820번 브론즈 2 https://www.acmicpc.net/problem/10820 10820번: 문자열 분석 문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있 www.acmicpc.net 문제 보기 분류: 구현, 문자열 문제 풀기 입력이 없을때 까지 문자열을 input에 입력받는다. 입력받은 문자열을 toCharArray()를 이용하여 각각의 문자를 array에 저장한 후 하나씩 빼내어 소문자, 대문자, 숫자 그리고 공백을 다음 메서드를 사용하여 카운트 한다. 소문자: Character.isLowerCase() 대문자: Character.isU..

공부하기/백준 2023.08.22

[Java] 백준 풀기 6550 - 부분 문자열

자바 백준 6550번 실버 5 https://www.acmicpc.net/problem/6550 6550번: 부분 문자열 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문자열 s 와 t가 빈칸을 사이에 두고 들어온다. s와 t의 길이는 10만을 넘지 않는다. www.acmicpc.net 문제 보기 분류: 그리디 알고리즘, 문자열 문제 풀기 문자열 s에서 순서대로 하나씩 문자를 선택하고, for loop로 문자열 t의 index를 하나씩 올려가며 같은 문자가 있는지 확인한다. 같은 문자가 있으면 sIndex를 하나씩 늘려가며, 최종 sIndex와 s 문자열 길이 s.length()가 같으면 "Yes"를 출력한다. 코드 보기 import java.util.S..

공부하기/백준 2023.08.18

[Java] 백준 풀기 10610 - 30

자바 백준 10610번 실버 4 https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 문제 보기 분류: 수학, 그리디 알고리즘, 문자열, 정렬, 정수론 문제 풀기 30의 배수가 가능한지 알아보기 위해서 주어진 숫자의 각 자리를 모두 합한 값이 3의 배수가 되는지 확인하고 0이 하나라도 존재하는지 확인한다. String 타입으로 입력 받은 숫자를 charAt() - '0' 방법을 이용하여 int 타입의 숫자로 변경한다. 0부터 9까지 각 숫자의 개수를 ..

공부하기/백준 2023.08.14

[Java] 백준 풀기 4597 - 패리티

자바 백준 4597번 브론즈 2 https://www.acmicpc.net/problem/4597 4597번: 패리티 입력은 여러 개의 비트 스트링으로 이루어져 있다. 각 비트 스트링은 한 줄로 이루어져 있고, 길이는 1~31비트이다. 또, 비트 스트링의 마지막 문자는 e 또는 o이다. (e: 짝수 패리티, o: 홀수 패리티 www.acmicpc.net 문제 보기 분류: 구현, 문자열 문제 풀기 1의 개수를 세어서 짝수개인지 홀수개인지 찾고, 각각 마지막 패리티와 비교하여 일치하는지 확인한다. 일치할 경우 마지막 패리티 자리에 `0`으로 교체하여 출력하고 일치하지 않으면 `1`로 교체하여 출력한다. 한 줄로 입력된 문자는 charAt() 함수를 이용하여 parity 및 1을 구분한다. 코드 보기 impo..

공부하기/백준 2023.08.12

[Java] 백준 풀기 15904 - UCPC는 무엇의 약자일까?

자바 백준 15904번 실버 5 https://www.acmicpc.net/problem/15904 15904번: UCPC는 무엇의 약자일까? 첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는 www.acmicpc.net 문제 보기 분류: 문자열, 그리디 알고리즘 문제 풀기 입력된 문자열에 대해 indexOf()를 사용하여 char 타입으로 대문자 `U`, `C`, `P`, `C`의 index를 찾는다. 각 indexOf()는 존재하는 문자를 찾으면 그 문자의 `index`를 반환하고 그렇지 않으면 `-1`을 반환한다. 첫 번째 문자의 탐색이 끝나면 그 ind..

공부하기/백준 2023.07.21

[Java] 백준 풀기 11536 - 줄 세우기

자바 백준 11536번 실버 5 https://www.acmicpc.net/problem/11536 11536번: 줄 세우기 이름이 증가하는 순으로 나타나면 INCREASING, 감소하는 순이면 DECREASING을 한 줄에 출력한다. 만약 위의 두 경우가 아니라면 NEITHER를 출력한다. www.acmicpc.net 문제 보기 분류: 구현, 문자열, 정렬 문제 풀기 입력받은 문자들을 compareTo() 메서드를 사용하여 정렬 순서를 확인할 수 있다. 모든 이름을 배열에 입력받고, 오름차순과 내림차순의 상태를 지정할 초기값을 설정한 후 현재 이름과 이전 이름의 순서에 따라 초기값 변경이 이루어지는 결과에 따라 "INCREASING", "DECREASING", "NEITHER"을 판별한다. compar..

공부하기/백준 2023.07.14

[Java] 백준 풀기 2745 - 진법 변환

자바 백준 2745번 브론즈 2 https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 문제 보기 분류: 수학, 구현, 문자열 문제 풀기 지난번 풀었던 1550번 16진수 변환을 그대로 적용하였다. Integer.parseInt(String, int) 를 사용하여 진수 변환을 한다. Integer.parseInt(변환 전 수, 변환 전 진법) 을 입력하여 10진법의 수로 변환 출력한다. 코드 보기 import java.util.Scanner; publi..

공부하기/백준 2023.06.30

[Java] 백준 풀기 1159 - 농구 경기

자바 백준 1159번 브론즈 2 https://www.acmicpc.net/problem/1159 1159번: 농구 경기 상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작 www.acmicpc.net 문제 보기 분류: 구현, 문자열 문제 풀기 모든 이름을 입력받아 저장한다. 해시맵을 사용하여 이름의 첫 알파벳과 그 빈도수를 저장한다. 이때, getOrDefault() 를 사용하여 저장된 알파벳인 key 가 존재하면 기존의 value 에 1 을 누적하여 더하고 그렇지 않고 첫 알파벳 key 이면 0 + 1 을 저장한다. 모든 이름의 첫 알파벳을 HashMap 에 저장한 ..

공부하기/백준 2023.06.14