코딩테스트와 실무 역량 모두잡는 알고리즘 스터디(JAVA)
개발자의 성장 곡선
DFS와 같은 알고리즘을 몰라도 코딩 테스트는 풀 수 있다. 회사 업무에 실제로 써볼 일도 없을 것이다.
그러나 개발자의 성장곡선을 계단형으로 보았을 때, 다음 계단으로 넘어가려면 CS지식이 채워져야 한다.
CS지식이 채워지지 않은 채로 3,4,5,6년차가 되면 다음 스텝으로 넘어가지 못한 채 신입과 비교했을 때 경쟁력이 떨어지는 상태가 될 수 있다.
반복문의 4가지 방법
- for
- while
- do-while
- 재귀 : 재귀는 반복문의 일종이다.
- 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에서 말하는 코드를 잘 쓰는 방법
- 불필요한 변수를 쓰지 마라
- 간결하게 유지하라
- 읽기 쉽게 만들어라
- 쌩뚱맞은 변수 이름 짓지 마라