코딩테스트 4

[프로그래머스] 햄버거 만들기 (파이썬)

시간초과로 오류가 나서, 그리고 내 코드도 마음에 들지만 다른 사람 코드가 더 깔끔해보여서 기록해본다. [문제]애니팡 같은 문제였다. 특정 패턴이 반복되면 팡 터지고 지워져서 붙여지면 다시 팡 터지고를 반복하는 문제였다.  [코드]while로 리스트 안에서 돌면서 1231이 지워지면 i를 앞으로 당겨서 풀었다.처음에 1231이 지워진다음 i-=3로 설정하지 않고 i=0으로 설정했더니 시간초과가 떴다.i=0 으로 설정하면 배열이 길어질 경우에 앞에서부터 무의미한 반복이 일어나서임을 깨닫고 i-=3로 바꿔줬다.최대 3 인덱스 이하($\because$123일 경우)에는 다시 지워질 가능성이 없기 때문이다.def solution(ingredient): answer = 0 i = 0 while i..

[프로그래머스] 평행 (파이썬)

[문제]점 4개 중에 임의로 2개씩 선택했을 때, 서로 평행한 경우가 있는지 알아보는 문제였다.정답률 53%의 문제였다.[유의한 점](y2 - y1) / (x2 - x1) == (y4 - y3) / (x4 - x3) 형식으로 나누기를 사용하면x1 == x2 일 때 0으로 나누면서 오류가 날까봐 곱셈 형태로 바꿔줬다. [코드]def solution(dots): answer = 0 # [[x1, y1],[x2, y2],[x3, y3],[x4, y4]] = dots x1 = dots[0][0] y1 = dots[1][0] x2 = dots[2][0] y2 = dots[3][0] x3 = dots[0][1] y3 = dots[1][1] x4 = dots[2][1]..

[프로그래머스] 겹치는 선분의 길이 (파이썬)

[문제]겹치는 선분의 길이를 구하는 문제였다.입출력 예는 아래와 같다.정답률 60% 문제였다.linesresult[[0,1],[2,5],[3.9]]2[[-1,1],[1,3],[3,9]]0[[0,5],[3,9],[1,10]]8 [풀이 방법]1. a,b값이 -100이상 100이하이기 때문에, 냅다 [0]으로 구성된 리스트 lst를 만들어줬다. 2. 그 다음에 각각의 선분에 대해서 for문을 적용해서 돌려줬다. 3. for문 안에 for문을 또 넣어서 a(line[0])와 b(line[1]) 사이의 모든 값에 해당하는 lst의 인덱스에 +1을 하도록 했다. 4. 겹치는 부분의 길이를 구하기 위해서, lst 중 값이 2 이상인 부분의 개수를 세어주었다. 5. 세어준 개수가 답! [코드]def solution(l..

[프로그래머스] 다항식 더하기 (파이썬)

왼쪽과 같이 입력이 다항식으로 주어지면 동류항끼리 계산해서 출력을 하는 문제였다.반례를 잘 찾아야 하는 문제였다.  나는 중간의 ' + '를 기준으로 split을 해서 풀었다.그렇기 때문에 출력 형식에 따라서 하나하나 처리를 해주어야 했다.먼저 if문으로 입력이 다항식일 때, 단항식일 때를 처리해줬다. 그리고 다항식 if문 안에 출력의 형태에 따라 또 if문을 넣어주었다.출력 꼴이 ax + b 라고 할 때, 출력이 'x'일 때, 'x+b'일 때, 'b'일 때, 'ax'일 때, 'ax + b'일 때 모두 따로따로 처리해줘야 했다.다른 풀이를 봐도 뾰족한 수는 없는 것 같다.def solution(polynomial): a_part, b_part = 0, 0 # 다항식 일 때 if ' + '..