TIL 23.01.25

쓰옹·2023년 1월 25일
0

개발자를 향해~~TIL✍

목록 보기
73/87

프로젝트 마무리

깃허브 칸반보드를 사용해서 이슈를 만들어 관리하는 방식을 처음 해봤는데 진행상황을 한 눈에 볼 수 있고 깃 브랜치와 연결되어 편리하게 사용하였다. 프로젝트 계획 단계에서 api명세와 컨벤션을 확실히 정해놔야 개발 단계에서 협업 시에 불편함이 없을 것 같다. 레디스를 이용해 볼 기회가 되어 좋았지만 동작방식을 아직 정확히 이해하지 못한 것에 대한 아쉬움이 있다. 그리고 역할을 맡은 부분 외의 기능에 대해서는 자세히 모르고 쿼리를 사용하지 못한 부분이 아쉽다. 팀원들이 작성한 부분에 대한 공부가 필요하다. 코드를 분석하면서 모르는 부분을 공부하고 연관관계를 끊고 jpql로 해보는 공부도 해봐야겠다. 그리고 프로젝트 계획에서 시퀀스다이어그램을 그려보는 것도 흐름 이해하는 데 좋을 것 같다.

알고리즘문제포스팅

이렇게 풀게 되는 경우 시간이 많이 걸린다. 다른 사람 풀이를 보니까 내 풀이보다 시간이 훨씬 적게 소요되었다.

import java.util.stream.Collectors;

class Solution {
    public String solution(String myString) {
        return myString.chars().mapToObj(operand -> String.valueOf((char) (Character.isLowerCase(operand) ? Character.toUpperCase(operand) : Character.toLowerCase(operand)))).collect(Collectors.joining());
    }
}

테스트 1 〉 통과 (1.99ms, 68.4MB)
테스트 2 〉 통과 (2.60ms, 77.9MB)
테스트 3 〉 통과 (4.49ms, 68.4MB)
테스트 4 〉 통과 (3.33ms, 81.5MB)
테스트 5 〉 통과 (4.46ms, 92.8MB)
테스트 6 〉 통과 (4.60ms, 70MB)
테스트 7 〉 통과 (5.89ms, 78.9MB)

훠얼씬 적게 소요된다.
스트림을 사용해서 그런 것일까 아
아니면 저번처럼 문자열에다 for문 돌려서 나온걸 더해서 오래 걸리는 걸수도 있겠단 생각이 들었다. 위에는 스트림을 사용해서 Collectors.joining()으로 StringBuilder를 사용해서 시간이 더 적게 드는 걸수도..
오오 맞다맞다

class Solution {
   public static String solution(String my_string) {
        StringBuilder answer = new StringBuilder();
        char[] str = my_string.toCharArray();
        for(char ch : str) {
            answer.append(Character.isLowerCase(ch) ? Character.toUpperCase(ch) : Character.toLowerCase(ch));
        }
        return answer.toString();
    }
}

기존 코드에서 StringBuilder로만 변경한 코드이다. 그런데 위에 스트림보다 적은 시간복잡도가 소요되었다.

테스트 1 〉 통과 (0.05ms, 76.8MB)
테스트 2 〉 통과 (0.07ms, 80.1MB)
테스트 3 〉 통과 (0.09ms, 70.9MB)
테스트 4 〉 통과 (0.06ms, 75.7MB)
테스트 5 〉 통과 (0.69ms, 72.8MB)
테스트 6 〉 통과 (0.83ms, 74.4MB)
테스트 7 〉 통과 (0.77ms, 74.4MB)

profile
기록하자기록해!

0개의 댓글