#1 String(문자열) - 1. 문자 찾기
진행 상황
#1 String (문자열)
1. 문자 찾기
2. 대소문자 변환
3. 문장 속 단어(indexOf(), substring())
4. 단어 뒤집기(StringBuilder이용법 또는 직접뒤집기)
5. 특정 문자 뒤집기(toCharArray())
6. 중복문자제거
7. 회문문자열
8. 팰린드롬(replaceAll 정규식이용)
9. 숫자만 추출
10. 문자거리
11. 문자열 압축
12. 암호(replace(), parseInt(string, 2))
코딩테스트 전 자바 기본상식
◇ main 함수는 모든 실행 프로그램의 기본이 되는 함수여야 한다.
따라서 어디에서나 접근이 가능해야 하므로 public 으로 작성한다.
(private는 해당 클래스에서만 접근 가능, protected는 같은 패키지 내에서만 접근 가능)
◇ 자바가 변수나 함수를 메모리에 할당하는 방법은 2가지가 있다.
static에 선언하거나 heap 영역에 선언(new 연산자)하는 것이다.
static은 프로그램이 실행되는 순간 메모리에 할당되고 메모리 정리 대상이 아니다.
heap 영역은 연산이 실행되는 순간 메모리에 할당되고 Garbage Collector에 의해 정리된다.
따라서 main 메소드는 heap 영역에 선언되면 안된다.
왜냐하면 이 함수가 Garbage Collector에 의해 정리되면 프로그램이 죽어버리기 때문이다.
따라서 main 메소드는 static으로 선언한다.
◇ public static void main(String[] args) 에서 String[] args는
args 문자열을 배열로 사용하겠다는 의미다. args는 변수명이라 변경할 수 있다.
자바 Scanner 클래스 입력 메소드
in.nextByte() // byte 형 입력 및 리턴
in.nextShort() // short 형 입력 및 리턴
in.nextInt() // int 형 입력 및 리턴
in.nextLong() // long 형 입력 및 리턴
in.nextFloat() // float 형 입력 및 리턴
in.nextDouble() // double 형 입력 및 리턴
in.nextBoolean() // boolean 형 입력 및 리턴
in.next() // String 형 입력 및 리턴 (공백을 기준으로 한 단어를 읽음)
in.nextLine() // String 형 입력 및 리턴 (개행을 기준으로 한 줄을 읽음)
print : 괄호안 내용을 단순히 출력. 개행문자(=줄바꿈문자=\n) 포함안됨.
printf : C에서의 printf와 동일. %d, %s 등을 쓰기위해 사용. 개행문자 포함X
println : 괄호안 내용을 출력한 후 마지막에 개행문자가 포함되어 있어 출력후 한 줄 띄워짐.
Edit Plus Error 해결
Error: Could not find or load main class Main
Caused by: java.lang.ClassNotFoundException: Main
제어판 - 시스템 및 보안 - 시스템 - 고급 시스템 설정 - 환경 변수 들어가서
CLASSPATH 값 %JAVA_HOME%\lib으로 되어있을텐데 %JAVA_HOME%\lib;. 으로 변경해준다.
이렇게 설정해주면 기존 설정해준 디렉토리 뿐만 아니라 현재 디렉토리에서도 클래스를 찾아줘서
메인 클래스를 찾게 된다.
문자 찾기 문제 풀이
문자열 입력받고 특정 문자 입력 받아서 해당 문자열에 특정 문자가 몇 개 있는지 나타내는 프로그램 작성하시오.
대소문자 구분하지 않는다.
예시)
DaramGda
d
답 : 2
▣ 출력예제 1 2
소스코드 :
import java.util.*;
class Main {
public int solution(String str, char t) {
int answer = 0;
str = str.toUpperCase();
t = Character.toUpperCase(t);
for(int i=0; i<str.length(); i++) {
if(str.charAt(i) == t) answer++;
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
// System.in은 사용자로부터 입력을 받기 위한 입력 스트림
Scanner kb = new Scanner(System.in);
String str = kb.next();
// charAt : String을 index로 접근
char c = kb.next().charAt(0);
System.out.print(T.solution(str, c));
}
}
작성한 코드에서
for(int i=0; i<str.length(); i++) {
if(str.charAt(i) == t) answer++;
}
부분을
for(char x : str.toCharArray()) {
if (x==t) answer++;
}
로 작성해도 된다.
for each문을 사용한 것이다.
근데 위 코드에서
여기 올 것들은 배열, 이터레이터를 제공하는 컬렉션 프레임워크들 (Arraylist, List 등..) 이 와야한다.
String은 올 수 없다. 따라서 문자 한 개 한 개를 분리해서 문자를 원소로하는 문자 배열을 만들어야 한다.
String을 문자 배열로 만들어주는 toCharArray를 이용한다.

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