Notice
Recent Posts
Recent Comments
Link
개발 공부~
[프로그래머스 기초] JAVA 문자열 2 본문
- 글자 이어 붙여 문자열 만들기
class Solution {
public String solution(String my_string, int[] index_list) {
String answer = "";
for(int i = 0; i < index_list.length; i++){
answer += my_string.charAt(index_list[i]);
}
return answer;
}
}
9로 나눈 나머지
class Solution {
public int solution(String number) {
int sum = 0;
String[] numbers = number.split("");
for(int i = 0; i < numbers.length; i++){
sum += Integer.parseInt(numbers[i]);
}
return sum%9;
}
}
- 다른 풀이
문자열 number를 toCharArray()로 문자 배열로 변환
c - '0' 의미: 문자 c의 아스키 코드 값에서 문자 '0' 아스키 코드 값을 빼면 해당 문자의 숫자값
public int solution(String number) {
int sum = 0;
for (char c : number.toCharArray()) {
sum += c - '0'; // char를 int로 변환하여 덧셈
}
return sum % 9;
}
- 세로 읽기
class Solution {
public String solution(String my_string, int m, int c) {
String answer = "";
for(int i = c-1; i < my_string.length(); i+=m) {
if(i %m == c -1){
answer += my_string.charAt(i);
}
}
return answer;
}
}
- qr code
for (int i = r; i < code.length(); i += q) 도 가능~!
class Solution {
public String solution(int q, int r, String code) {
String answer = "";
for(int i = 0; i < code.length(); i++){
if(i%q==r){
answer += code.charAt(i);
}
}
return answer;
}
}
substring()
String substring(int start, int end)
-> start부터 end-1까지 추출
--> end가 없을경우엔 start인덱스부터 끝까지 추출
- 배열 만들기 5
import java.util.ArrayList;
class Solution {
public int[] solution(String[] intStrs, int k, int s, int l) {
ArrayList<Integer> answer = new ArrayList<>();
for(String str : intStrs){
int n = Integer.parseInt(s.substring(str,str+l));
if(n>k){
answer.add(n);
}
}
return answer.stream().mapToInt(i->i).toArray();
}
}
- 부분 문자열 이어 붙여 문자열 만들기
class Solution {
public String solution(String[] my_strings, int[][] parts) {
String answer = "";
for (int i = 0; i < my_strings.length; i++) {
String str = my_strings[i];
answer += str.substring(parts[i][0], parts[i][1]+1);
}
return answer;
}
}
- 문자열의 뒤의 n글자
class Solution {
public String solution(String my_string, int n) {
String answer = "";
answer=my_string.substring(my_string.length()-n);
return answer;
}
}
- 접미사 배열
import java.util.Arrays;
class Solution {
public String[] solution(String my_string) {
String[] answer = new String[my_string.length()];
for(int i = 0; i < my_string.length(); i++) {
answer[i] = my_string.substring(i);
}
Arrays.sort(answer);
return answer;
}
}
- 문자열의 앞의 n글자
class Solution {
public String solution(String my_string, int n) {
return my_string.substring(0,n);
}
}
접두사, 접미사
문자열.endsWith(suffix): 주어진 문자열이 특정 문자열 또는 접미사로 끝나는지 여부를 확인
문자열.startsWith(String prefix): 어진 접두사(prefix)로 문자열이 시작하는지 여부를 확인
- 접미사인지 확인하기
class Solution {
public int solution(String my_string, String is_suffix) {
int answer = 0;
if(my_string.endsWith(is_suffix)){
answer = 1;
}
return answer;
}
}
- 접두사인지 확인하기
class Solution {
public int solution(String my_string, String is_prefix) {
int answer = 0;
if(my_string.startsWith(is_prefix)){
answer = 1;
}
return answer;
}
}
- 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기
class Solution {
public String solution(String myString, String pat) {
for(int i = myString.length(); i >=0; i--){
String str = myString.substring(0,i);
if(str.endsWith(pat)){
return str;
}
}
return "";
}
}
-> 다른 풀이
lastIndexOf(문자열): 특정 문자나 문자열이 마지막으로 나타나는 위치를 찾는 데 사용
찾지 못하면 -1 반환
class Solution {
public String solution(String myString, String pat) {
String answer ="";
int index = myString.lastIndexOf(pat);
answer = myString.substring(0,index) +pat;
return answer;
}
}
- 문자열이 몇 번 등장하는지 세기
class Solution {
public int solution(String myString, String pat) {
int answer = 0;
for (int i = myString.length(); i >= 0; i--) {
String str = myString.substring(0,i);
if(str.endsWith(pat)){
answer++;
}
}
return answer;
}
}
StringBuilder -> for.문자열의 효율적 처리
- 특징
1. 가변 클래스 -> 길이나 내용 변경
2. 동적 크기 조정 -> 기존 버퍼 재사용
3. 멀티스레드 환경에서는 안전 X -> StringBuffer사용
- 메서드
- append(문자): 끝에 추가
- insert(인덱스,문자): 특정 위치에 추가
- delete(시작,끝+1): 시작~끝까지의 요소 삭제
- replace(시작,끝+1,문자): 시작~끝까지의 문자열을 다른 문자로 대체
- reverse(): 뒤집기
- toString(): string으로 변환
- 문자열 여러번 뒤집기
class Solution {
public StringBuilder solution(String my_string, int[][] queries) {
StringBuilder str = new StringBuilder(my_string);
for(int[] query : queries) {
int start = query[0];
int end = query[1];
StringBuilder re = new StringBuilder(str.substring(start, end+1));
re.reverse();
str.replace(start, end+1, re.toString());
}
return str;
}
}
- 문자열 뒤집기
class Solution {
public String solution(String my_string, int s, int e) {
StringBuilder str = new StringBuilder(my_string.substring(s, e+1));
str.reverse();
return my_string.substring(0,s)+str+ my_string.substring(e+1);
}
}
알파벳 대소문자 관련
- 대/문자로 바꾸기
class Solution {
public String solution(String myString) {
return myString.toUpperCase(); //대문자로 바꾸기
return myString.toLowerCase(); //소문자로 바꾸기
}
}
- 배열에서 문자열 대소문자 변환하기 => 배열 크기 잊지말기~
class Solution {
public String[] solution(String[] strArr) {
String[] answer = new String[strArr.length];
for(int i = 0; i < strArr.length; i++) {
if(i%2==0){
answer[i] = strArr[i].toLowerCase();
} else{
answer[i] = strArr[i].toUpperCase();
}
}
return answer;
}
}
- A 강조하기
문자열. replace(변경할 문자열, 대체할 문자열)
문자열. replaceAll(변경할 문자열, 대체할 문자열) -> 정규 표현식 사용함.
class Solution {
public String solution(String myString) {
myString = myString.toLowerCase();
myString = myString.replace("a","A");
return myString;
}
}
- 특정한 문자를 대문자로 바꾸기
class Solution {
public String solution(String my_string, String alp) {
my_string = my_string.replace(alp,alp.toUpperCase());
return my_string;
}
}
- 원하는 문자열 찾기
문자열1.contains(문자열2): 문자열2가 문자열1에 포함되어있는지 확인 -> true or false
class Solution {
public int solution(String myString, String pat) {
int answer = 0;
if(myString.toLowerCase().contains(pat.toLowerCase())){
answer = 1;
}
return answer;
}
}
공백으로 구분하기 1
split(): 자열을 특정 구분 자를 기준으로 분리할 때 사용하는 메서드
=> 분리된 결과는 문자열 배열로 반환
class Solution {
public String[] solution(String my_string) {
return my_string.split(" ");
}
}
공백으로 구분하기 2
- trim(): 문자열의 양 끝에 있는 공백을 제거하는 메서드
- split("\s+"): 규 표현식을 사용하여 문자열을 여러 공백을 기준으로 분리
\\s: 정규 표현식에서 공백
+: 하나 이상의 공백
-> \\s+: 하나 이상의 공백 문자열을 찾는 정규 표현식
class Solution {
public String[] solution(String my_string) {
return my_string.trim().split("\\s+");
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 기초] JAVA 리스트 (0) | 2024.07.01 |
---|---|
[프로그래머스 기초] JAVA 배열 1 (1) | 2024.06.30 |
[프로그래머스 기초] JAVA 조건문 (0) | 2024.06.29 |
[프로그래머스 기초] JAVA 더 크게 합치기 (0) | 2024.06.29 |
[프로그래머스 기초] JAVA 문자열 1 (0) | 2024.06.29 |