ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래머스]문자열 내 p와 y의 개수 : chatGPT의 활용방안까지 - 코딩테스트
    알고리즘 2023. 8. 9. 14:53

     

    * 강사님의 팁

    1. 주석을 다는 걸 아끼지 말자

    2. 문제를 내가 어떻게 인지하고 생각이 흐르고 있는지 각자의 방법으로 항상 표시하자. 주석, 메모장, 손필기 등

     

    //함수형 문제(메서드형 문제)
    class Solution {
        boolean solution(String s) { 
            /*
            배열, 반복, for, 순차탐색(선형탐색)
            1. 입력 2. 계산 3. 출력
            메서드형 문제에서 '입력'은 무엇일까?
            표준입출력형에선 Scanner를 통한 입력
            메서드형에서는 '매개변수'를 통해 인자를 받는다.
            값:인자(arguments), 변수 : 매개변수(parameter)
            
            메서드에서 외부로 값을 내보내는 방법
            1. (인스턴스 변수, 멤버변수) 변수에 할당, 변경
            2. return(반환값)
            메서드형 문제에서는 멤버변수를 드물게 쓴다
            값 출력에는 무조건 return을 쓴다.
            
            대문자와 소문자가 섞여있는 문자열 s
            'p'와 'y'의 개수를 비교해서
            (1)같으면 true, 다르면 false를 (2) 'p''y'가 하나도 없다면 true 출력
            */
            int pCount = 0; //p의 개수를 세는 변수
            int yCount = 0; // y의 개수를 세는 변수
            //for문 밖에 있어야하는 이유 : 반복문 돌 때마다 0이 됨 + 스코프
            for(int i = 0; i<s.length(); i++) {
                char c = s.charAt(i);
                System.out.println(c); //순차탐색
                //index -> 길이만큼 반복해서 처리
                if(c == 'p' || c == 'P') { //문자 c가 p 또는 P인 경우
                    pCount++; //pCount에 1을 더함
                }
                if(c == 'y' || c == 'Y') { //문자 c가 y 또는 Y인 경우
                    yCount++; //yCount에 1을 더함
                }
                
            }
            
            System.out.println("pCount: " + pCount);
            System.out.println("yCount: " + yCount);
            
            boolean result;
            
            if(pCount == yCount) {
                result = true;
            } else {
                result = false;
            }
            return result;
        }
    }

     

     

    [chatGPT의 활용]

    GPT가 문제를 풀어주는 건 아직 어려워한다. 하지만 주어진 코드를 리팩토링(코드를 효율적으로 재구성)하는 능력은 뛰어나다.

     

    class Solution {
        boolean solution(String s) {
            int pCount = 0;
            int yCount = 0;
    
            for (char c : s.toCharArray()) {
                if (c == 'p' || c == 'P') {
                    pCount++;
                } else if (c == 'y' || c == 'Y') {
                    yCount++;
                }
            }
    
            return pCount == yCount;
        }
    }

     

Designed by Tistory.