Java 코딩테스트 공부/Java 알고리즘 공부

#1 String(문자열) - 4,5번 문제

2022. 5. 28. 21:53
목차
  1. 진행 상황
  2. 단어 뒤집기 (StringBuilder이용법 또는 직접뒤집기)
  3. 특정 문자 뒤집기 (toCharArray())

 

진행 상황

 

 

#1 String (문자열)

 

1. 문자 찾기
2. 대소문자 변환
3. 문장 속 단어(indexOf(), substring())
4. 단어 뒤집기(StringBuilder이용법 또는 직접뒤집기)
5. 특정 문자 뒤집기(toCharArray())
6. 중복문자제거
7. 회문문자열
8. 팰린드롬(replaceAll 정규식이용)
9. 숫자만 추출
10. 문자거리
11. 문자열 압축
12. 암호(replace(), parseInt(string, 2))

 

 

 

 

 

단어 뒤집기 (StringBuilder이용법 또는 직접뒤집기)

 

사전 지식

 

String str1 = daram이란 String str2 = G라는 string 객체가 있을 때 str1 + str2 연산을 하게 될 경우,

새로운 String을 생성하게 된다.

이렇게 되면 메모리 할당과 메모리 해체를 발생시켜 더하는 연산이 많아질 경우 성능이 좋지 않다.

 

따라서 StringBuilder를 이용하는 것이 좋다.

StringBuilder는 String과 문자열을 더할 때 새로운 객체를 생성하는 것이 아니라

기존의 데이터에 더하는 방식을 사용하기 때문에 상대적으로 속도도 빠르고 부담도 적다.

특히 긴 문자열을 더하는 상황에서 StringBuilder를 이용하는 것이 좋을 것이다.

 

문자열 합 간단한 예시

StringBuilder sb = new StringBuilder();
sb.append("daram");
sb.append("G");
System.out.println(sb.toString());

 

StringBuilder 주요 메서드

import java.lang.StringBuilder;
import java.util.*;
public class sb {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("daram");

        // 문자열 추가
        System.out.println(sb.append("G")); // daramG
        System.out.println(sb.append(123)); // daramG123

        // 문자열 삭제
        System.out.println(sb.delete(6, sb.length())); // daramG

        // 문자열 삽입
        System.out.println(sb.insert(2, "ooo")); // daoooramG
        
        // 문자열 교체(인덱스 2~4까지를 "xxx"로 교체)
        System.out.println(sb.replace(2, 5, "xxx")); // daxxxramG

        // 인덱싱, 문자열 자르기
        System.out.println(sb.substring(5)); // ramG
        System.out.println(sb.substring(0, 5)); // daxxx

        // 문자 삭제
        System.out.println(sb.deleteCharAt(5)); // daxxxamG

        // 문자열 뒤집기
        System.out.println(sb.reverse()); // Gmaxxxad

        // 문자 대체, 문자 교체, 문자 치환
        sb.setCharAt(1, 'w');
        System.out.println(sb); // Gwaxxxad

        // 문자열 길이 조정
        sb.setLength(6);
        System.out.println(sb); // Gwaxxx

        // String으로 변환
        System.out.println(sb.toString()); // Gwaxxx
    }
}

 

 

 

문제

 

N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램을 작성하세요.

입력예시)

3

daram

Gda

good

 

소스코드

import java.util.*;

class Main {
	public ArrayList<String> solution(int n, String[] str) {
		// ArrayList는 동적 배열
		ArrayList<String> answer = new ArrayList<>();
		for(String x : str) {
			String tmp = new StringBuilder(x).reverse().toString();
			answer.add(tmp);
		}
		return answer;
	}

	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		int n = kb.nextInt();
		String[] str = new String[n];
		for(int i=0; i<n; i++) {
			str[i] = kb.next();
		}

		for(String x : T.solution(n, str)) {
			System.out.println(x);
		}
	}
}

 

 

특정 문자 뒤집기 (toCharArray())

 

 

문제

 

영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고, 특수문자는 자기 
자리에 그대로 있는 문자열을 만들어 출력하시오.

 

 

풀이

 

소스코드

import java.util.*;

class Main {
	public String solution(String str) {
		String answer;
		char[] s = str.toCharArray();
		int lt = 0, rt = str.length() - 1;
		while(lt<rt) {
			if(!Character.isAlphabetic(s[lt])) lt++;
			else if(!Character.isAlphabetic(s[rt])) rt--;
			else {
				char tmp = s[lt];
				s[lt] = s[rt];
				s[rt] = tmp;
				lt++;
				rt--;
			}	
		}
		// char 배열을 String으로 변경 (valueOf는 static 메서드)
		answer = String.valueOf(s);
		return answer;
	}

	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str = kb.next();
		System.out.println(T.solution(str));
	}
}

 

 

 

학습자료 : https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%ED%85%8C%EB%8C%80%EB%B9%84

 

자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 - 인프런 | 강의

자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성

www.inflearn.com

 

'Java 코딩테스트 공부 > Java 알고리즘 공부' 카테고리의 다른 글

#1 String(문자열) - 7,8,9번 문제  (0) 2022.05.31
#1 String(문자열) - 6번 & String과 StringBuilder 수행시간 측정  (0) 2022.05.29
#1 String(문자열) - 2,3번 문제  (0) 2022.05.27
#1 String(문자열) - 1. 문자 찾기  (0) 2022.05.26
# Java 코딩테스트 공부 시작, 목차  (0) 2022.05.24
  1. 진행 상황
  2. 단어 뒤집기 (StringBuilder이용법 또는 직접뒤집기)
  3. 특정 문자 뒤집기 (toCharArray())
'Java 코딩테스트 공부/Java 알고리즘 공부' 카테고리의 다른 글
  • #1 String(문자열) - 7,8,9번 문제
  • #1 String(문자열) - 6번 & String과 StringBuilder 수행시간 측정
  • #1 String(문자열) - 2,3번 문제
  • #1 String(문자열) - 1. 문자 찾기
daramG
daramG
dotori Java
daramG
다람쥐의 개발 블로그
daramG
전체
오늘
어제
  • 분류 전체보기 (193)
    • Java 코딩테스트 공부 (67)
      • Java 알고리즘 공부 (37)
      • Java 백준 문제풀이 (27)
      • Java 코테 나만의 팁 (3)
    • SQL Study (0)
      • Programmers SQL 문제풀이 (0)
      • SQLP 준비 (0)
    • 웹 개발 지식 정리 (0)
      • Servlet (0)
      • Java 정리 (0)
    • 자바 스프링 (45)
      • 스프링 공부 (4)
      • 스프링 게시판 프로젝트 (6)
      • 부트 블로그 JPA 프로젝트 (30)
      • react & springboot (5)
      • 스프링 오류창고 (0)
      • 리액트 + 스프링 프로젝트 (0)
      • pf (0)
      • pfError (0)
    • React (6)
      • React 정리 (3)
      • React 오류 창고 (3)
    • C++ 코딩테스트 공부 (중단) (20)
      • c++ 백준 문제풀이 (15)
      • c++ 알고리즘 공부 (5)
    • Unity (3)
      • Unity 공부 (3)
    • WebRTC (2)
      • WebRTC 강의학습 정리 (0)
      • WebRTC 프로젝트 (1)
    • 김영한님의 스프링 강의 학습 (10)
      • 스프링 강의 목차 (1)
      • 인텔리제이 & 스프링 기초 (1)
      • 스프링 핵심 원리 (8)
    • 전공 지식 정리 (40)
      • interview (0)
      • Java (0)
      • 운영체제 (4)
      • 데이터베이스 설계 (10)
      • 소프트웨어 공학 (3)
      • 유닉스 (14)
      • 디지털 논리회로 (0)
      • 인공지능 (7)
      • js (0)
      • etc (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 김영한 스프링 강의
  • Java 코테 나만의 팁
  • 운영체제
  • 백준 c++
  • 김영한 스프링 입문
  • 코테 알고리즘
  • 인공지능
  • React&Spring 강의수강
  • 데이터베이스 설계
  • 유닉스
  • Java 백준 문제풀이
  • java
  • 부트 jpa 게시판 프로젝트
  • java 알고리즘
  • 스프링 프로젝트
  • C++ 알고리즘
  • 스프링부트 블로그 프로젝트
  • 스프링부트 프로젝트
  • Unity 공부
  • 스프링 공부
  • 김영한의 스프링 핵심 원리
  • 노마드코더의 zoom클론코딩
  • 무서운 이야기
  • 디지털 논리회로

최근 댓글

최근 글

hELLO · Designed By 정상우.
daramG
#1 String(문자열) - 4,5번 문제
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.