_Hiiro
성장을 공유하는 개발자
_Hiiro
전체 방문자
오늘
어제
  • 분류 전체보기 (57)
    • 개발기록 (3)
      • 사이드 프로젝트 (3)
    • 코딩테스트 (5)
      • 인프런 강의 (4)
      • 정리노트 (1)
      • 프로그래머스 (0)
      • 구름 (0)
    • Language (5)
      • Java (5)
    • 우아한테크코스 (43)
      • 우테코 프리코스 (5)
      • 회고 (18)
      • 학습 정리 (18)
      • 글쓰기 (2)
    • 일상 (1)
      • 회고 (1)

블로그 메뉴

  • 홈
  • 방명록
  • 글쓰기
  • 관리자

인기 글

최근 댓글

티스토리

hELLO · Designed By 정상우.
_Hiiro

성장을 공유하는 개발자

코딩테스트/인프런 강의

01. String 파트

2022. 9. 26. 07:19

01. 문자 찾기

  • 인스턴스 메소드를 사용할 때는 해당 인스턴스를 메인 함수 내에서 생성한 이후에 사용할 수 있다.
  • 스캐너 문법 
Scanner sc = new Scanner(System.in);
String str = sc.next(); // 문자열을 한 줄 읽어들임
char c = sc.next().charAt(0); // 문자열을 한 줄 읽어들인 후 0번째 인덱스의 문자에 접근

sc.nextByte()
sc.nextInt()    //정수형 입력 및 리턴
sc.nextShort()
sc.nextLong()

sc.nextFloat()
sc.nextDouble()

sc.nextBoolean()

sc.next()       // 공백 문자를 기준으로 한 단어를 읽음
sc.nextLine()   // 개행 문자를 기준으로 한 줄을 읽음

 

  • 대문자/소문자 변형
// 자바에서는 단일 문자를 입력받는 기능이 없기 때문에 이처럼 문자를 입력받아야 한다. 
String str = sc.nextLine(); 
char c = str.charAt(0);

//문자열 대문자/소문자 변환
str = str.toUpperCase();
str = str.toLowerCase();

//문자 대문자/소문자 변환
c = Character.toUpperCase(c);
c = Character.toLowerCase(c);
  • for each 구문
String str = sc.next(); 
char c = str.cahrAt(0); 
int ans = 0; 

// String 클래스는 collection계열 데이터가 아니기 때문에 CharArray로 변환해줘야 한다. 
for(char t : str.toCharArray()){ if(t==c) ans++; }

02. 대소문자 변환

  • 문자열 붙이기
char a = 'c'; 
String str1 = "string1"; 
String str2 = "string2";

result1 = str1 + a;  //string1c
result2 = str2 + a;  //string2c
result3 = str1 + str2;  //string1string2
  • 대소문자 검사
char a = 'a'; 
char A = 'A';

Character.isUpperCase(a);   //false
Character.isUpperCase(A);   //true
Character.isLowerCase(a);   //true
Character.isLowerCase(A);   //false
  • 아스키코드
  • 'a' = 65 'z' = 90 'A' = 97 'Z' = 122

03. 문장 속 단어

  • 최솟값, 최댓값 설정
  • int min = Integer.MIN_VALUE; int max = Integer.MAX_VALUE;
  • 문자열 나누기(split)
String str = "Hello World!";
String[] strarr = str.split(" ");
  • indexOf와 substring 사용
String str = "It is time to study";

str.indexOf(" ");   // 공백문자가 처음으로 나타나는 인덱스의 위치를 반환 / 없을 시에 -1 반환
str.indexOf("ti")   // ti라는 문자열이 처음으로 나타나는 인덱스의 위치 반환/ 없을 시에 -1 반환
str.indexOf(" ", 1)  // 1 인덱스 이후부터 값을 탐색한다.

str.substring(2)    // 인덱스 2~끝까지 부분 문자열을 리턴한다.
str.substring(2,5)  // 인덱스 2~4까지의 부분 문자열을 리턴한다.

 

04. 단어 뒤집기

  • StringBuilder
    • 자바에서 한번 생성된 String 객체는 변경이 불가능하다. 따라서 하나의 문자열을 다른 문자열과 연결하면 새 문자열이 생성되고 이전 문자열은 가비지 컬렉터로 들어가게 된다.
    • 이러한 연유로 많은 문자열을 연결하게 되면 중간 문자열 객체가 많이 생성되어 비효율적인 코드가 생성된다.
    • StringBuilder는 변경 가능한 문자열을 만들어 주기 때문에 String을 합치는 작업 시 하나의 대안이 될 수 있다.
    • 기본적인 사용법 
StringBuilder sb = new StringBuilder(); 
sb.append("문자열").append(" 연결"); 
String str = sb.toString();

 

  • 덧붙여 StringBuffer 클래스도 사용법이 동일하니 같이 알아두자.
    StringBuffer sb2 = new StringBuffer();
    sb2.append("문자열").append(" 연결");
    String str2 = sb2.toString();

    System.out.println(sb);
    System.out.println(str);

    System.out.println(sb2);
    System.out.println(str2);

 

05. 특정 문자 뒤집기

  • Character.isAlphabetic()
    • Character 클래스의 스태틱 메소드로 인자로 입력받은 문자가 알파벳인지 아닌지 체크해주는 메소드이다.
  • String.valueOf(char[] arr)
    • 문자 배열을 String 자료형으로 변환시켜주는 스태틱 메소드

 

06. 중복 문자 제거

일반적인 문자의 연결은 + 연산으로 함을 잊지 말자.

str.indexOf(char c)

  • 인자로 입력 받은 c가 str 문자열의 몇번째 인덱스에 처음으로 등장하는지 리턴한다.
  • indexOf() 메소드를 활용한 중복 문자 제거
String str = "kckkef!";
String ans = new String();

for(int i=0; i<str.length(); i++){
    if((str.indexOf(str.charAt(i)) == i)){
        ans += str.charAt(i);
    }
}

07. 회문 문자열(Palindrome String)

  • 문자열을 대문자로 변환해서 앞뒤 비교
  • StringBuilder 사용해서 equals 말고 equalsIgnoreCase 사용 (대소문자 구분 없이 같은 문자열인지 비교)

 

08. 유효한 회문 문자열

  • replace() vs replaceAll()
  • 둘 다 string 객체의 메소드로 인자로 주어진 값을 다른 값으로 치환한다.
String str = "ABCDE"
String tmp1 = str.replace("BC", "F");
System.out.println(tmp1); // AFDE

String tmp2 = str.replaceAll("[ABC]", "F"); //정규식 []안에 명시된 모든 문자를 뒤에 명시된 인자로 치환하겠다는 의미
System.out.println(tmp2); // FFFDE

String tmp3 = str.replaceAll("[^ABC]", "F"); //정규식 []안에 명시된 모든 문자를 제외한 다른 문자들을 뒤에 명시된 인자로 치환하겠다는 의미
System.out.println(tmp3); // ABCFF

09. 숫자만 추출

  • 아스키 코드 값 암기하기 (알파벳은 26개이다.)
char zero = '0'
System.out.println((int)zero); //48

char nine = '9';
System.out.println((int)nine); //57

char A = 'A';
System.out.println((int)A); //65

char Z = 'Z';
System.out.println((int)Z); //90

char a = 'a';
System.out.println((int)a); //97

char z = 'z';
System.out.println((int)z); //122
  • Character 클래스 문자 검사 static 메소드
Character.isUpperCase(ch);
Character.isLowerCase(ch);
Character.isLetter(ch);
Character.isDigit(ch);
Character.isWhiteSpace(ch); //공백문자 체크
  • Integer 클래스 static 메소드 정리
// String to Integer 타입으로 변환하는 메소드
strNum = "10";
Integer var1 = new Integer(strNum); //생성자 사용
Integer var2 = Integer.valueOf(strNum); //메소드 활용

// String to int 타입으로 변환하는 메소드
int var3 = Integer.parseInt(strNum);

// int to String
int tmp1 = 10;
String var4 = Integer.toString(tmp1);

 

12. 암호

//2진수로 표현된 문자를 10진수로 변환
String str = "10001";
System.out.println(Integer.parseInt(str,2));	//17

//8진수로 표현된 문자를 10진수로 변환
String str2 = "177";
System.out.println(Integer.parseInt(str2,8));	//127

//16진수로 표현된 문자를 10진수로 변환
String str3 = "ab";
System.out.println(Integer.parseInt(str3,16));	//171


// 정수를 각 진수 문자열로 변환
int num = 127;
String binaryString = Integer.toBinaryString(num);  //2진수 문자열로 변환
String octalString = Integer.toOctalString(num);    //8진수 문자열로 변환
String hexString = Integer.toHexString(num);        //16진수 문자열로 변환

 

 


출처 레퍼런스

  • 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/dashboard
저작자표시 (새창열림)

'코딩테스트 > 인프런 강의' 카테고리의 다른 글

05. Stack & Queue  (0) 2022.10.14
04. HashMap, TreeSet (해쉬, 정렬지원 Set)  (0) 2022.10.13
03. Two Pointer Algorithm & Sliding Window  (0) 2022.10.11
    '코딩테스트/인프런 강의' 카테고리의 다른 글
    • 05. Stack & Queue
    • 04. HashMap, TreeSet (해쉬, 정렬지원 Set)
    • 03. Two Pointer Algorithm & Sliding Window
    _Hiiro
    _Hiiro
    성장을 위한 학습을 하며 배운 것들을 공유합니다.

    티스토리툴바