본문 바로가기
SW Jungle [예림]/Algorithm

[WEEK02] DAY17 & TMI

by novxerim 2022. 10. 10.

https://velog.io/@yerimii11/WEEK02-DAY17 2021년 11월 18일에 작성된 게시글 아카이브입니다.  (사유: 블로그이전)

 

[WEEK02] DAY17 & TMI

시험 보기 전날 못다푼 문제 풀고 + 난이도(하) 빠르게 복습한 날 !! 원래같으면 전체 복습을 해야 할 날인게 맞지만 2명 팀이기까지 하다보니 진도 맞추기조차 벅찼다 ㅎ.ㅎ * 슬라이싱 #2 먼저 어

velog.io



시험 보기 전날 못다푼 문제 풀고 + 난이도(하) 빠르게 복습한 날 !!
원래같으면 전체 복습을 해야 할 날인게 맞지만 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

댓글