코딩테스트/프로그래머스

[프로그래머스 기초] JAVA 문자열 1

머밍 2024. 6. 29. 21:08

문자열 출력

System.out.println("a = "+a +"\n" +"b = "+b);

 

출력 방법

 

int타입 변수라 %d로 쓰기 or +를 이용하기

System.out.printf("%d + %d = %d",a,b,a+b); 
System.out.println(a+ " + "+ b+" = "+(a+b));

특수문자 출력하기

 

\ 와 " 앞에는 \를 붙여서 입력한 문자 그대로 출력되도록 해야 한다.

-> 결과: !@#$%^&*('"<>?:;

System.out.print("!@#$%^&*(\\'\"<>?:;");

문자열의 문자 하나씩 출력

  1. for-each문으로 하나씩 출력
  2. charAt()을 이용하기
for (char ch : a.toCharArray())
     System.out.println(ch);
for(int i=0; i<a.length(); i++){  
    System.out.println(a.charAt(i));  
}

홀짝 구분하기

 

조건문으로 구현했지만 간단한 조건이라면 삼항 연산자를 사용하자!

삼항 연산자
조건 ? 참일 때의 값 : 거짓일 때의 값

System.out.print(n + " is "+(n % 2 == 0 ? "even" : "odd"));

if(n%2!=0){
    System.out.printf("%d is odd",n);
}else{
    System.out.printf("%d is even",n);
}
int answer = 0;
return answer = num%n == 0 ? 1:0 ;
int answer = 0;
return answer= (number%n==0 && number%m==0)?1:0;

문자열 함수

문자열 반복: repeat()

  • 문자열 str을 n번 반복하여 출력
String str = sc.next();
int n = sc.nextInt();
System.out.println(str.repeat(n));

 

대소문자 바꿔서 출력하기
  • 문자열.charAt(인덱스): 문자열의 특정 위치에 있는 문자를 반환하는 메소드
  • Character.isUpperCase(문자열),Character.isLowerCase(문자열): 대소문자 검사
  • Character.toLowerCase(문자열),Character.toUpperCase(문자열): 대소문자 변경
Scanner sc = new Scanner(System.in);
String a = sc.next();

String answer = "";

for(int i = 0; i<a.length(); i++){
    char c = a.charAt(i);
    if(Character.isUpperCase(c)){
        answer += Character.toLowerCase(c);
    }
    else{
        answer += Character.toUpperCase(c);

    }
}
System.out.println(answer);

 

문자열 붙여서 출력하기

 

두개의 문자열을 공백없이 이어서 출력하기
-> 문자열.concat(문자열):원래 문자열을 변경하지 않음. 대신, 두 문자열을 결합한 새로운 문자열을 반환.

 

System.out.print(a.concat(b));
System.out.print(a+b);

 

문자열 겹쳐쓰기 -> 문자열 중 일부 추출하기
substring() 함수
substring(int beginIndex): 주어진 시작 인덱스부터 문자열의 끝까지의 부분 문자열을 반환.
substring(int beginIndex, int endIndex): 주어진 시작 인덱스부터 끝 인덱스 전까지의 부분 문자열을 반환.

 

  •  my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 
answer = my_string.substring(0,s);
answer += overwrite_string;
answer += my_string.substring(overwrite_string.length() + s);

 

문자열 섞기 -> 문자열끼리 합할때의 + 사용


P. 문자 덧셈?  두 문자의 유니코드 값이 더해져 의도와 다른 숫자가 생성됨.
A. 문자 결합: 문자를 문자열로 변환한 후 결합하면 의도한 대로 각 문자가 결합됨.

1.String.valueOf(char) 
2. char + ""을 사용하여 문자를 문자열로 변환한 후 결합함.
3. 하나의 문자씩 넣어준다.
for(int i = 0; i < str1.length(); i++) {
	answer += String.valueOf(str1.charAt(i)) + String.valueOf(str2.charAt(i));
}

for(int i = 0; i < str1.length(); i++) {
	answer += str1.charAt(i) + "" + str2.charAt(i); }

for(int i = 0; i < str1.length(); i++){
    answer+= str1.charAt(i);
    answer+= str2.charAt(i);
}

 

 

정수 -> 문자열로~

Integer.toString(정수): 정수 -> 문자열~!
Integer.parseInt(문자열): 문자열 -> 정수!
class Solution {
    public int solution(int[] num_list) {
        int answer = 0;
        String odd ="";
        String even = "";
        for(int i =0;i<num_list.length;i++){
            if(num_list[i]%2==1){
                even += Integer.toString(num_list[i]);
            }
            else{
                odd += Integer.toString(num_list[i]);
            }
        }
        answer = Integer.parseInt(even) + Integer.parseInt(odd);
        return answer;
    }
}

 

  • 두번째로는 foreach문을 사용해서 간단히 구현함
class Solution {
    public int solution(int[] num_list) {
        int answer = 0;
        String odd ="";
        String even = "";
        for(int i : num_list){
            if(i % 2==0){
                even += "" + i;
            } else{
                odd += ""+i;
            }
        }
        answer = Integer.parseInt(even) + Integer.parseInt(odd);
        return answer;
    }
}