해당 문제를 처음봤을때 바로 든 생각이 dic을 이용해서
주어진 배열을 range를 통해서 0,5 면 그 숫자들을 키값으로 넣고
데이터에는 카운트를 넣어서 문제를 풀려고했었다
for line in lines:
for length in range(line[0],line[1]+1):
try:
dic[length]+=1
except:
dic[length]=0
그렇게 해서 나온코드가 바로 이거
처음에는 여기까지했으니까 이제 2인거만 확인을 하면 정답이 나오겠지!? 라는 생각을 하고
for value in dic.values():
if value > 0:
answer+=1
해당 코드를 통해서 카운트가 되어있으면 그 값만큼 겹치는 선분을 세라 라는 식으로
코드를 짯지만이렇게되면 겹치게되는 경우 즉 선분이 0,3 하고 3,5 의 경우에는 3에 겹친 판정으로 나오게 되어서
값이 다르게 나왔다 그래서 그다음으로 쓴 방법은
for key,value in dic.items():
if value > 0 and dic.get(key+1,0)>0:
answer+=1
를 통해서 딕셔너리의 다음값도 카운트가 되어있어야만 +1을해라 라는 방식으로 문제를 해결하려고 했지만,,,,
계속 문제가 발생했다
그래서 머리를 아무리 쥐어짜도 해결이 안되서 오전에 푸는것을 포기하고 오후에 다시 도전을 했는데
처음에 for 문을 통해서 길이를 지정할때 range에 +1 을 해서 모든 시작값과 끝값을 모두 찍는게아니라
range까지만해서 실제 길이의 -1 의값만큼만 찍히게 하면
[[0, 2], [-3, -1], [-2, 1]]이런 예제에서는
{0: 1, 1: 0, -3: 0, - 2: 1, -1: 0}
기존에 썻던 방식에서는
{0: 1, 1: 1, 2: 0 , -3: 0 , -2: 1, -1: 1}
이렇게 나와서 값이 2와 4로 차이가 나온다는것을 알게되고
for문을 통해서 비교하는게 아니라 그냥 값이 1이상이면 answer+=1을해서 정답을 구했습니다
'내일배움 캠프 > TIL' 카테고리의 다른 글
코딩테스트 체육복 (0) | 2023.05.07 |
---|---|
코딩테스트 신규 아이디 추천 (0) | 2023.05.03 |
vue를 이용해서 게시글 띄우는 코드 바꾸기 (0) | 2023.05.02 |
fetch api를 이용해서 서버에서 데이터 가져오기 (0) | 2023.04.27 |
파스칼의 삼각형 재귀함수 (1) | 2023.04.26 |