프로그래머스 자율주행스쿨

코딩테스트 풀이 - 사칙연산, 영어 끝말잇기

donie 2020. 12. 7. 21:31

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