코딩테스트 풀이 - 사칙연산, 영어 끝말잇기
1. 사칙연산
programmers.co.kr/learn/courses/30/lessons/1843
코딩테스트 연습 - 사칙연산
[5, -, 3, +, 1, +, 2, -, 4] 3
programmers.co.kr
1) 문제 해설
ex. 1 - 3 + 5 - 8
위 예시에서 3은 무조건 - 의 부호를 가진다.
하지만 5는 뺄 수도 있고, 8은 더할 수도 있다.
ex. A + B - C + D + E + F - G - H + I + J + K 의 경우,
A + B - (C - (D + E + F) - (G + H) - (I + J)) + K 로 하면 A + B + D + ··· + K - C로 C만 빼고 나머지는 다 더해서 계산할 수 있다.
2) FSM (Finite State Machine)
상태 'plus'
상태 'undecided'
상태 'end'
상태 'ERROR' : 들어오지 않는 입력
2. 영어 끝말잇기
programmers.co.kr/learn/courses/30/lessons/12981
코딩테스트 연습 - 영어 끝말잇기
3 [tank, kick, know, wheel, land, dream, mother, robot, tank] [3,3] 5 [hello, observe, effect, take, either, recognize, encourage, ensure, establish, hang, gather, refer, reference, estimate, executive] [0,0]
programmers.co.kr
1) enumerate함수
enumerate(iterable, start=0)
Iterable: any object that supports iteration
Start: the index value from which the counter is to be started, by default it is 0
2) 자료구조 효율성
리스트
L1 = [1, 2, 3, 4]
L2 = [5]
[1, 2, 3, 4, 5]의 리스트를 만들기 위해 두가지 방법이 있다.
L1.append(L2) 또는 L1 += L2
이때 전자의 방법이 더 효율이 좋다.
후자의 방법은 리스트와 리스트를 병합(concatenation)하는 연산인데, 병합연산 결과 리스트가 새로 만들어지며, 이것을 L1이 가리키게 된다.
string타입의 여러 문자열을 합치는 예제를 보자.
string = ['hell', 'o ', 'python']
ans = ''
for x in string:
ans += x
으로 더할 수 있다. 하지만 위와 같은 이유로 효율성이 떨어진다. 시간적으로도 공간적으로도.
그래서 다음 방법을 사용하면 더 효율적으로 작성할 수 있다.
string = ['hell', 'o ', 'python']
List = []
for x in string:
List.append(x)
ans = ''.join(List)
3. 블록 이동하기
programmers.co.kr/learn/courses/30/lessons/60063
코딩테스트 연습 - 블록 이동하기
[[0, 0, 0, 1, 1],[0, 0, 0, 1, 0],[0, 1, 0, 1, 1],[1, 1, 0, 0, 1],[0, 0, 0, 0, 0]] 7
programmers.co.kr