ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [올리브씨의 알고리즘 입문] Day 6 - 문자열, 반복문, 출력, 배열, 조건문
    알고리즘/프로그래머스_입문 2024. 4. 3. 15:23

    021. 문자열 뒤집기

    문제 설명.

      문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.

     

    제한 사항.

      1 ≤ my_string의 길이 ≤ 1,000

     

    입출력 예.

    my_string return
    "jaron" "noraj"
    "bread" "daerb"

    풀이.

    class Solution {
        public String solution(String my_string) {
    
            int leng = (int)my_string.length();
            String[] strArr = my_string.split("");
            String answer = "";
    
            for(int i=0 ; i<leng ; i++){
                answer += strArr[(leng-1)-i)];
            }
            return answer;
        }
    }

     

    다른 풀이.

    class Solution {
        public String solution(String my_string) {
            StringBuilder sb = new StringBuilder();
            sb.append(my_string).reverse();
    
            return sb.toString();
        }
    }
    class Solution {
        public String solution(String myString) {
            return new StringBuilder(myString).reverse().toString();
        }
    }

     

    MAIN POINTS.

    더보기

    [개발 포인트]

    https://wikidocs.net/276

    StringBuffer 또는 StringBuilder의 기능을 사용할 수 있는가?

     

    기본 선언 :

    import java.util.*;

    StringBuffer sb = new StringBuffer(); //객체 선언

    StringBuffer sb = new StringBuffer("문자열"); //객체 선언 + 문자열 주입

     

    StringBuffer의 주요 메소드

    • .append(); → sb.append("생성할 문자열");
      문자열을 계속해서 추가해 나갈 수 있다. toString()메서드를 사용하면 String 자료형으로 변경할 수 있다.
    • .insert(); sb.insert(위치 인덱스,"추가 문자열");
      지정위치에 문자열을 추가할 수 있다.
    • .substring(); sb.substring(시작 인덱스, 끝 인덱스);
      시작~끝 위치의 문자를 뽑아낸다.

    StringBuilder의 주요 메소드

    • .append();  sb.append("bbb"); / sb.append(4);
      문자열을 추가한다.
    • .insert(int offset, String str); sb.insert(2, "ccc");
      offset 위치에 str을 추가한다.
    • .replace(); → .replace(3, 6, "ye")
      첫번째와 두번째 파라미터로 받는 숫자 인덱스에 위치한 문자열을 대체한다.
    • .substring(int start, (int end)); → sb.substring(5), sb.substring(3, 7);
      인덱싱. 파라미터가 하나라면 해당 인덱스부터 끝까지, 두개라면 시작점과 끝점-1 까지 인덱싱.
    • deleteCharAt(int index); → sb.deleteCharAt(3);
      인덱스에 위치한 문자 하나를 삭제한다.
    • .delete(int start, int end); → sb.delete(3, sb.length());
      start 부터 end-1 까지의 문자를 삭제한다.
    • .toString(); → sb.toString("문자열");
      String으로 변환한다.
    • .reverse(); → sb.reverse("문자열");
      해당 문자 전체를 뒤집는다.
    • .setCharAt(int index, String s); → sb.setCharAt(변경문자 인덱스, 변경할 문자);
      index 위치의 문자를 s로 변경.
    • .setLength(int len); → sb.setLength(인덱스 길이);
      문자열 길이 조정, 현재 문자열보다 길게 조정하면 공백으로 채워짐, 현재 문자열보다 짧게 조정하면 나머지 문자는 삭제.
    • .trimToSize(); →sb.trimToSize();
      문자열이 저장된 char[] 배열 사이즈를 현재 문자열 길이와 동일하게 조정, String 클래스의 trim()이 앞 뒤 공백을 제거하는 것과 같이 공백 사이즈를 제공하는 것, 배열의 남는 사이즈는 공백이므로, 문자열 뒷부분의 공백을 모두 제거해준다고 보면 됨.
     

    03-05 StringBuffer

    StringBuffer는 문자열을 추가하거나 변경할 때 주로 사용하는 자료형이다. StringBuffer의 다양한 메서드를 살펴보면서 StringBuffer의 사용법을 알아보자.…

    wikidocs.net


    022. 직각삼각형 출력하기

    문제 설명.

      "*"의 높이와 너비를 1이라고 했을 때, "*"을 이용해 직각 이등변 삼각형을 그리려고합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요.

     

    제한 사항.

      1 ≤ n ≤ 10

     

    입출력 예.

    입력 출력
    3 *
    **
    ***

    풀이.

    import java.util.Scanner;
    
    public class Solution {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
    
            for(int x = 1; x<=n; x++){
                for(int y = 0; y<x; y++){
                    System.out.print("*");
                }
            System.out.println();
            }
        }
    }

     

    다른 풀이.

    import java.util.Scanner;
    
    public class Solution {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
    
            for(int i=1; i<=n; i++){
                System.out.println("*".repeat(i));
            }
        }
    }

     

    MAIN POINTS.

    더보기

    [개발 포인트]

    • .repeat(반복할 수); 를 사용할 수 있는가?
    • Scanner 사용을 이해했는가?

    023. 짝수 홀수 개수

    문제 설명.

      정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

     

    제한 사항.

      1 ≤ num_list의 길이 ≤ 100
      0 ≤ num_list의 원소 ≤ 1,000

     

    입출력 예.

    num_list result
    [1, 2, 3, 4, 5] [2, 3]
    [1, 3, 5, 7] [0, 4]

    풀이.

    class Solution {
        public int[] solution(int[] num_list) {
            int odd_cnt = 0; //홀
            int even_cnt = 0; //짝
            for(int index=0; index<num_list.length; index++){
                if(num_list[index]%2 == 0){
                    even_cnt++;
                } else{
                    odd_cnt++;
                }
            }
            int[] answer = {even_cnt, odd_cnt};
            return answer;
        }
    }

     

    다른 풀이.

    class Solution {
        public int[] solution(int[] num_list) {
            int[] answer = new int[2];
    
            for(int i = 0; i < num_list.length; i++)
                answer[num_list[i] % 2]++;
    
            return answer;
        }
    }

     

    MAIN POINTS.

    더보기

    다른풀이법 소름돋아... 미친것같아


    024. 문자 반복 출력하기

    문제 설명.

      문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.

     

    제한 사항.

      2 ≤ my_string 길이 ≤ 5
      2 ≤ n ≤ 10
      "my_string"은 영어 대소문자로 이루어져 있습니다.

     

    입출력 예.

    my_string n result
    "hello" 3 "hhheeellllllooo"

    풀이.

    class Solution {
        public String solution(String my_string, int n) {
            
            char[] charArr = new char[my_string.length()];
            String answer = "";
            
            for(int i=0; i<my_string.length(); i++){
                charArr[i]=(my_string.charAt(i));	//charArr[] index에 글자별로 char 주입
                for(int j=1; j<=n; j++){
                    answer += Character.toString(charArr[i]);
                }
            }
            return answer;
        }
    }

     

    다른 풀이.

    class Solution {
        public String solution(String my_string, int n) {
            StringBuilder sb = new StringBuilder();
            for(char c : my_string.toCharArray()){
                sb.append((c + "").repeat(n));
            }
            return sb.toString();
        }
    }

     

    MAIN POINTS.

    더보기
    • StringBuilder 함수 : .append("") / .repeat(n) 등
    • char[] 함수 : charAt(i)
    • char ↔ Stirng 형변환 : https://www.javatpoint.com/java-char-to-string 참고
    • char 또는 String 인덱스별 Array 주입 / str.split()함수 사용

    출처 :https://school.programmers.co.kr/ 입문 알고리즘

    https://school.programmers.co.kr/learn/challenges/beginner?order=acceptance_desc&languages=java

Designed by Tistory.