https://velog.io/@yerimii11/WEEK02-DAY17 2021년 11월 18일에 작성된 게시글 아카이브입니다. (사유: 블로그이전)
시험 보기 전날 못다푼 문제 풀고 + 난이도(하) 빠르게 복습한 날 !!
원래같으면 전체 복습을 해야 할 날인게 맞지만 2명 팀이기까지 하다보니 진도 맞추기조차 벅찼다 ㅎ.ㅎ
* 슬라이싱 #2
먼저 어제 글에서 잠깐 나왔던 슬라이싱
A[:]은 새로운 리스트를 만들어낸다
그래서 pop()을 했을 때 기존에 가져온 A리스트와 완전 별개의 리스트가 생성된다.
반면 B=A와 같은 꼴은 한 곳에서 pop()을 하면 양쪽이 다 pop이 된다.
.
.
복습
2110 공유기 설치 (이분 탐색)
다시 보니 또 기억이 안났던..........공유기,,,
분홍색 부분이 다시 보며 정리한 요점이다
이 풀이에서 mid는 거리를 가리키는 변수이다
.
.
다시 풀어본 문제
2493 탑 (스택)
밑 부분에 11.17(수) 부분을 보면 된다
코드
import sys
n = int(sys.stdin.readline())
top = list(map(int, sys.stdin.readline().split()))
stack = []
a = []
for i in range(0,n):
while 1:
if not stack:
stack.append((i,top[i]))
a.append(0)
break
if stack[-1][1]>=top[i]:
a.append(stack[-1][0]+1)
stack.append((i,top[i]))
break
else:
stack.pop()
print(*a)
.
.
새로 푼 문제
10000 원 영역 (스택)
코드
import sys
N = int(sys.stdin.readline())
points = []
for _ in range(N):
x, r =list(map(int, sys.stdin.readline().split()))
points.append(["{", x - r, 0, 0]) #괄호, 좌표, 상태(이어지면 1 아니면 0), 이어진 원 지름 길이의 합
points.append([")", x + r, 0, 0])
points.sort(key=lambda x:(x[1], x[0]))
stack = []
answer = 1
for i in range(len(points)):
if points[i][0] == "{":
if stack:
if stack[-1][1] == points[i][1] or stack[-1][3] == points[i][1]: # 스택에 마지막 좌표값과 point의 좌표값이 같거나
# Stack 지름길이의 합이 넣을 point의 좌표값과 같으면
stack[-1][2] = 1 # stack안에 가장 마지막 값의 상태를 1로만든다.(이어져있다)
else:
stack[-1][2] = 0
stack.append(points[i])
else: # 입력한 position 값이 "}"와 같으면
half = stack.pop() # half에 stack의 마지막값을 빼와서
if stack and stack[-1][2] == 1: # stack이 빈배열이 아니고, stack의 이어짐 유무가 1이면
stack[-1][3] = points[i][1] # stack안의 마지막 값의 지름값을 닫는 괄호(positon의 좌표값으로 바꿈)
if half[2] == 1 and half[3] == points[i][1]: # half의 2번값 이어진 상태가 1이고 , half의 지름값이 포지션 값의 좌표길이와 같으면
answer += 1 #영역이 닫힌걸 의미하므로 answer 에 1 한번 더 가산
answer += 1 # 영역이 닫혔다고 가정해야 하므로 answer에 값 1 가산
print(answer)
{, }와 같은 괄호 값을 써서 원이 서로 인접하는 부분을 표현했다.
}와{가 같은 값으로 들어오면 원이 인접하는 걸로 해서 카운팅을 해준다.
.
.
.
13334 철로 (큐)
이건 같은 팀원분께 설명만 들었다.
자세한 풀이는 여기로.
.
.
1655 가운데를 말해요 (우선순위 큐)
.
.
1715 카드 정렬하기 (우선순위 큐)
자정 넘어 하느라 머리가 안돌아가서,,,,,,,,내 상태를 대변하는 그림 하나가,,
.
.
3190 뱀 (큐)
게임 종결 조건
1) 뱀이 벽에 닿는 경우
0으로 가득채운 좌표에 +2를 해 둘레를 1로 메워
뱀이 벽에 닿았을 경우를 쉽게 잡아내기 위한 아이디어가 인상적이었던 필웅오빠 풀이.
2) 자신의 몸에 닿는 경우
큐에 뱀이 움직이는 좌표값을 담고 실시간으로 빼는 과정에서
큐 안에 들어있는 좌표값과 같은 값이 들어왔을 경우를 자기 자신의 몸과 닿은 경우로 잡아냈다.
.
.
.
2504 괄호의 값 (스택)
이건 9012 괄호 문제와 비슷한 개념이라 어렵지 않았다
이 괄호의 값 문제에 2차원 배열을 합친 문제가 원 영역 문제가 아니었나 싶다
.
.
2261 가장 가까운 두 점 (분할 정복)
이건 구글링을 했는데 분할 정복 문제다보니
start와 end 값을 구해 mid를 나눠 양쪽을 탐색하는 방식의 풀이가 있었다
.
.
2812 크게 만들기 (스택)
2주차 문제들은 상대적으로 2차원 배열과 관련된 문제들이 많았다.
2021.11.17 수
오늘의 이야기
오늘은 세 번째 점심조런치 한 날~
부스트캠프 관련된 이야기가 많이 나왔다
네이버에서 부스트캠프는 총 6개월 과정인데
처음 시작할 때 코테에서 거르고 1개월 하고 찐 실무 시작하기 전에 한 번 더 거르고 한다고...
그래서 끝나고나면 80퍼센트는 네이버나 네이버 협력사로 취업한다고 한다
이런 얘기를 듣다보니 내가 3월에 취업할 정도의 실력이 될지 걱정이 많이 되었다. 항상 목표를 잊지 않고 달려야겠다
그리고 친척으로부터 온 전화에서도 웹개발과 관련된 이야기를 많이 들어서 나중에 어떤 쪽으로 해야할지에 대해서도 생각해보게 된 날이었다
화이링
'SW Jungle [예림] > Algorithm' 카테고리의 다른 글
[WEEK03] DAY19 (0) | 2022.10.14 |
---|---|
[WEEK02] DAY18 & TMI (0) | 2022.10.10 |
[WEEK02] DAY16 & TMI (0) | 2022.10.10 |
[WEEK02] DAY15 & 피보나치수열, 파라메트릭서치, DP(동적프로그래밍) (0) | 2022.10.07 |
[WEEK02] DAY13 (1) | 2022.10.07 |
댓글