본문 바로가기

🔅코딩테스트 공부🔅213

[프로그래머스] Level3 가장 먼 노드(python) https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 코드 다익스트라를 이용해서 문제를 해결했다. 양방향 간선이라서 graph[i[0]]과 graph[i[1]]에게 서로의 정점을 넣어주고, 다익스트라 알고리즘을 이용해서 문제를 해결하면 된다. import heapq INF = int(1e9) def solution(n, edge): graph = [[] for _ in range(n+1)] distance = [INF] * (n+1.. 2023. 5. 1.
[프로그래머스] Level3. 네트워크(python) https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 코드 1. BFS를 이용해 문제를 해결했다. 2. 노드와 연결되어있고, 방문한 적 없는 경우 bfs를 돌리고 3. 2번의 과정을 모든 노드를 방문할 때까지 반복한다. from collections import deque def solution(n, computers): maps = [True] * (n) cnt = 0 for i in range(n): #방문한 적 없는 노드 탐색.. 2023. 4. 30.
[프로그래머스] Level2 연속 부분 수열 합(python) https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 코드 def solution(elements): elements = elements + elements result = set() for step in range(1,len(elements)//2+1): start = 0 while start < (len(elements)//2): result.add(sum(elements[start:start+step])) start+=1 r.. 2023. 4. 29.
[프로그래머스] Level2 튜플(python) https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 코드 딕셔너리와 for문 등등 복잡하게 풀었는데 정규표현식을 이용하면 된다고 한다,, def solution(s): s = s[1:-1].split("}") temp = {} for i in s: if len(i) > 0 and i != "": if i[0] == ",": s = set(i[2:].split(",")) temp[len(s)] = s else: s = set(i[1.. 2023. 4. 26.
[백준] 2615번 오목(python) https://www.acmicpc.net/problem/2615 2615번: 오목 오목은 바둑판에 검은 바둑알과 흰 바둑알을 교대로 놓아서 겨루는 게임이다. 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있는데 가로줄은 위에서부터 아래로 1번, 2번, ... ,19번의 번호 www.acmicpc.net 1. 난이도 실버1 2. 내가 작성한 코드 maps = [list(map(int, input().split())) for _ in range(19)] total_arrow = {"down":(1,0),"right":(0,1),'down_right':(1,1),'down_left':(1,-1)} visit_down = [[0] * 19 for _ in range(19)] visit_right = [.. 2023. 4. 25.
[프로그래머스] Level2 문자열 압축(python) https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 풀이 def solution(s): min_result = len(s) for i in range(1,len(s)//2+1): #문자 단위의 개수 start = 0 end = i temp = [0,s[start:end]] record = "" for _ in range(len(s)//i+1): if temp[1] != s[start:end]: #temp값과 자른 값이 같지 않은 .. 2023. 4. 25.
[백준] 배열 돌리기(python) https://www.acmicpc.net/problem/17276 17276번: 배열 돌리기 각 테스트 케이스에 대해 회전 연산을 마친 후 배열의 상태를 출력한다. n줄에 걸쳐 각 줄에 n개의 정수를 공백으로 구분하여 출력한다. www.acmicpc.net 1. 난이도 실버2 아래와 같은 규칙을 찾아서 해결하려고 했는데 너무 구현하기 복잡했다. 시계 방향인 경우 중간열 인덱스 => x+2, x+1, x, x-1, x-2 로 이동해야 함 부 대각선 인덱스 => y+2, y+1, y, y-1, y-2로 이동해야 함 등등...... 그래서 결국 노가다로 푸는 걸 택했다. 아직 문제를 푼 사람이 많ㅈㅣ 않아서 좋은 방법을 못 찾음 ㅠㅠ 혹시 알게 되시면 알려주시라유 2. 내가 작성한 코드 1. temp1, t.. 2023. 4. 23.
[프로그래머스] Level2 방문 길이(python) https://school.programmers.co.kr/learn/courses/30/lessons/49994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 풀이 테스트케이스 8번부터 쭉 틀려서 뭐지 하고 질문 목록을 보고 왼->오, 오->왼 등을 같은 경로로 처리하지 않았다는 사실을 알았다. 이걸 수정한 풀이는 1. 현재 위치 + 이동 거리가 좌표 범위를 넘어가면 continue 2. 범위를 넘어가지 않고, 딕셔너리에 (현재x,현재y,이동x,이동y) 혹은 (이동x,이동y,현재x,현재y) 둘 다 있지 않은 경우 키 값을 새롭게 넣어준.. 2023. 4. 23.
[백준] 22858번 원상 복구(small)(python) https://www.acmicpc.net/problem/22858 22858번: 원상 복구 (small) 수가 적혀있는 $P_1, P_2, ..., P_N$ $N$개의 카드가 있다. 1부터 N까지 수가 하나씩 존재하는 $D_1, D_2, ... , D_i , ... D_N$ 가 있다. 이때 $D_i$는 $P_{D_i}$ 값을 $i$ 번째로 가지고 오는 것을 의미한다. 이러한 www.acmicpc.net 1. 난이도 실버3 2. 내가 작성한 코드 n, k = map(int, input().split()) end = list(map(int, input().split())) d = list(map(int, input().split())) for i in range(k): middle = [0 for _ in.. 2023. 4. 22.