본문 바로가기

🔅코딩테스트 공부🔅213

[프로그래머스] Level1 성격 유형 검사하기(python) https://school.programmers.co.kr/learn/courses/30/lessons/118666 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 코드 def solution(survey, c): result = '' kakao = {"R" : 0, "T" : 0, "C" : 0, "F" : 0, "J" : 0, "M" : 0, "A" : 0, "N" : 0} score = {1 : 3, 2 : 2, 3 : 1, 4 : 0, 5 : 1, 6 : 2, 7 : 3} for i in range(len(c)): j = list(.. 2023. 2. 11.
[백준] 2644번 촌수계산(python) https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 1. 내가 작성한 코드 from collections import deque def bfs(): queue = deque() queue.append(a) visit[a] = 0 while queue: x = queue.popleft() if x == b: return visit[x] else: for i in graph[x]: if visit[i] == 0: visit[i] =.. 2023. 2. 11.
[백준] 1946번 신입 사원(python) https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 1. 내가 작성한 코드 t = int(input()) for i in range(t): n = int(input()) #지원자 수 apply = [] #지원자의 점수 cnt = 1 #서류 1등은 무조건 합격이니 1부터 시작 for i in range(n): apply.append(list(map(int,input().split()))) apply.sort() #서류 기준으로 .. 2023. 2. 11.
[프로그래머스] Level1 둘만의 암호(python) https://school.programmers.co.kr/learn/courses/30/lessons/155652 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 코드 def solution(s, skip, index): arr = [] result = [] for i in range(97,123): #a~z까지 문자열 삽입 arr.append(chr(i)) #아스키코드로 변환 arr = list(sorted(set(arr) - set(skip))) #skip을 제외한 문자열 print(arr) for i in list(s): if ar.. 2023. 2. 10.
[백준] 7562번 나이트의 이동(python) https://www.acmicpc.net/submit/7562/55594757 로그인 www.acmicpc.net 1. 내가 작성한 코드 기존 문제들은 dx, dy가 동, 서, 남, 북 네 방향으로만 이동할 수 있는데, 이 문제는 각기 다른 8개의 방향으로 이동할 수 있다는 점을 제외하면 미로찾기와 동일한 문제이다. from collections import deque t = int(input()) #테스트 케이스 횟수 def bfs(): #이동할 수 있는 좌표 dx = [2,2,1,1,-2,-2,-1,-1] dy = [-1,1,-2,2,-1,1,-2,2] queue = deque() queue.append((start_x,start_y)) maps[start_x][start_y]= 1 while qu.. 2023. 2. 10.
[프로그래머스] Level2 게임 맵 최단거리(python) https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 코드 from collections import deque def solution(maps): bfs(maps,0,0) if maps[len(maps)-1][len(maps[0])-1] == 1: return -1 else: return maps[len(maps)-1][len(maps[0])-1] - 1 def bfs(maps,x,y): queue = deque() queue.ap.. 2023. 2. 10.
[백준] 24416번 알고리즘 수업 - 피보나치 수 1(python) https://www.acmicpc.net/problem/24416 24416번: 알고리즘 수업 - 피보나치 수 1 오늘도 서준이는 동적 프로그래밍 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 오늘은 n의 피보나치 수를 재귀호출과 동적 프로그래밍 www.acmicpc.net 1. 내가 작성한 코드 import sys input = sys.stdin.readline cnt1 = 1 cnt2 = 0 n = int(input().rstrip()) d = [0] * (n+1) def fibo1(x): #재귀함수 이용 global cnt1 if x == 1 or x == 2: return 1 else: cnt1+=1 return fibo1(x-1) + fibo1.. 2023. 2. 9.
[알고리즘] 다이나믹 프로그래밍 + 문제풀이 다이나믹 프로그래밍 (= 동적계획법) 메모리 공간을 약간 더 사용함으로써 연산 속도를 비약적으로 증가시킴 큰 문제를 작은 문제로 나눌 수 있으며, 작은 문제의 정답이 그것을 포함하는 큰 문제에서도 동일할 경우 사용 가능 메모제이션(=>한 번 구현한 결과를 메모해두고, 다시 호출하면 그대로 가져옴) 상향식(Bottom Up)방식 분할 정복 vs 다이나믹 프로그래밍 공통점 : 큰 문제를 작게 나눔 차이점 : 분할과 정복은 한 번 해결된 문제를 다시 처리하지 않으나, DP는 처리함] 문제 풀이 현황(기록용) 1 백준 24416번 브론즈1 O 20230209 2 백준 9095번 실버3 △ 20230216 3 백준 1463번 실버3 O 20230216 2023. 2. 9.
[프로그래머스] Level1 과일장수(python) https://school.programmers.co.kr/learn/courses/30/lessons/135808 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 코드 while len(score) >= m: 으로 반복문을 돌렸더니 계속 시간초과가 발생했다. 그래서 for 문으로 수정해주었다. def solution(k, m, score): result = 0 score = sorted(score, reverse=True) for i in range(0, len(score), m): tmp = score[i:i+m] if len(tmp).. 2023. 2. 9.