10월 04일 (월)

프로그래머스 알고리즘 스터디

Posted by Yan on October 4, 2021

코딩테스트와 실무 역량 모두잡는 알고리즘 스터디(JAVA)

개발자의 성장 곡선

DFS와 같은 알고리즘을 몰라도 코딩 테스트는 풀 수 있다. 회사 업무에 실제로 써볼 일도 없을 것이다.

그러나 개발자의 성장곡선을 계단형으로 보았을 때, 다음 계단으로 넘어가려면 CS지식이 채워져야 한다.

CS지식이 채워지지 않은 채로 3,4,5,6년차가 되면 다음 스텝으로 넘어가지 못한 채 신입과 비교했을 때 경쟁력이 떨어지는 상태가 될 수 있다.

반복문의 4가지 방법

  1. for
  2. while
  3. do-while
  4. 재귀 : 재귀는 반복문의 일종이다.
  • for <-> while 상호 대체 가능
  • for <-> 재귀, while <-> 재귀 상호 대체 가능

개발자의 개입을 최소화하라

프로그래머스 ‘올바른 괄호’ 문제 효율성 향상 방법

내가 쓴 코드: 자료구조 파트라서 stack을 써야 풀리는 문제인 줄 알았다…

1
2
3
4
5
6
7
8
9
10
11
boolean solution(String s) {
    Stack<Character> stack = new Stack<>();

    if (s.charAt(0) == ')' || s.charAt(s.length()-1) == '(') return false;

    for (int i = 0; i < s.length(); i++) {
        if (s.charAt(i) == '(') stack.push('(');
        else if (!stack.empty() && s.charAt(i) == ')') stack.pop();
    }

    return stack.empty();

오늘 수업에서 배운 효율성을 개선한 코드: stack을 사실 쓸 필요가 없다!
count를 사용하니 매우매우 빨라졌다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
boolean solution(String s) {
    int count = 0;

    // char array를 변수로 선언하지 않고 바로 반복문에 넣는 것도 개발자의 개입을 최소화하기 위함이다.
    for (char p : s.toCharArray()) {
        if (p == '(') {
            count++;
            continue;
        }

        if (count == 0) return false;
        count--;
    }

    return count == 0;
}

클린코드>, Effective Java에서 말하는 코드를 잘 쓰는 방법

  • 불필요한 변수를 쓰지 마라
  • 간결하게 유지하라
  • 읽기 쉽게 만들어라
  • 쌩뚱맞은 변수 이름 짓지 마라