20210118-TIL

나영원·2021년 1월 19일
0

T.I.L.

목록 보기
114/145

공부할 내용

  • 알고리즘 문제 풀이
  • 스프링 수업 복습
  • TiL 정리 및 Git & 블로그 업데이트

오늘 공부한 것 & 배운 내용

알고리즘 문제 풀이

문자열내마음대로정렬하기

  • 풀이

    class Solution {
        boolean solution(String s) {
            int yNum = 0;
            int pNum = 0;
    
            for (int i = 0; i < s.length(); i++) {
                String str = s.substring(i, i+1);
                if(str.equalsIgnoreCase("y")) {
                    yNum++;
                } else if (str.equalsIgnoreCase("p")) {
                    pNum++;
                }
            }
    
            if (yNum == pNum) {
                return true;
            }
            return false;
    
        }
    }
    • substring을 사용해서 하나씩 꺼내서 가져왔는데 equalsIgnoreCase를 사용하고 싶어서 String으로 뽑아올 필요가 있었기 때문이다
    • 다른 사람의 풀이를 toLowerCase를 통해 모두 소문자로 바꾼뒤 chartAt을 통해 가져와서 소문자만 비교하는 걸로 풀어가고 있어서 좋아보였다
      • 또한 y가 같으면 count++하고 p가 같으면 count--하여 count==0인 것만 체크하면 되게 만드는것도 좋은 방법인것 같다

서울에서김서방찾기

  • 풀이

    class Solution {
        public String solution(String[] seoul) {
            int index=0;
    
            for (int i = 0; i < seoul.length ; i++) {
                if(seoul[i].equals("Kim")){
                    index = i;
                }
            }
    
            return "김서방은 "+ index +"에 있다";
        }
    }
    • for문을 통해 Kim을 찾아서 index를 출력하는 방식으로 풀이하였다

    • break;는 다른사람의 풀이를 통해 참고해서 추가하였는데 최대한 반복문이 덜도록 하는 것들을 신경써야할 것 같다

문자열을정수로바꾸기

  • 풀이

    class Solution {
        public int solution(String s) {
            int answer = 0;
    
            if(s.charAt(0) == '-') {
    
                answer = Integer.parseInt(s.substring(1)) * -1;
    
            } else {
                answer = Integer.parseInt(s);
            }
    
            return answer;
        }
    }

시저암호

  • 풀이

    class Solution {
        public String solution(String s, int n) {
            char[] chars = s.toCharArray();
            boolean isUpperCase;
            for (int i = 0; i <chars.length ; i++) {
                isUpperCase=false;
                if(chars[i] == ' '){
                    continue;
                }
                if(chars[i] <= 90) {
                    isUpperCase =true;
                }
    
                int temp = chars[i]+n;
    
                if (isUpperCase) {
                    if(temp > 90) {
                        temp = 64 + (temp-90);
                    }
                } else {
                    if(temp > 122 ){
                        temp = 96 + (temp-122);
                    }
                }
                chars[i] = (char)temp;
            }
            return String.valueOf(chars);
        }
    }
    • 지난번에 풀어본 문제인데 조금 다르게 풀었다고 시간이 또 오래걸렸다
      • isUpperCase= false를 for문안에서 초기화 해주었어야 했는데 밖에서 해주었다가 에러가 발생하여 시간이 오래걸렸다
    • 다른사람의 풀이를 보면 훨씬짧게 풀어놨는데 아직 잘이해를 못하겠다..

내일 공부할 내용

  • 알고리즘 문제 풀이
  • 스프링 수업복습
  • 자료구조/알고리즘 수업
  • TiL 정리 및 Git & 블로그 업데이트
profile
배우는 개발 일기

0개의 댓글