코딩테스트 15

[삼성SW역량][Python/BOJ] 백준 3190 뱀(시뮬레이션)

시뮬레이션 문제로 문제에서 요구하는 사항을 완성시키면 된다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸길이는 변하지 않는다. 1. mp를 입력받는다. 2. 사과의 위치를 1으로 표시한다. 3. 방향을 바꿀 시간을 입력받는다. 4. start() 4-1. 덱에 위치를 넣는다. 4-2. 벽 또는 본인 몸에 부딪히지않았다면 방문을 표시한다. 4-3. 만약 사과가 있다면 꼬리를 제거하지않고 없다면 제거한다. 4-4. 만약 현재 시간이 3에서 입력받은 방향을 바꿀 시간..

[코테후기]네이버 부스트 캠프 _ 1차 코딩테스트 후기

[ 혹시 이 글이 문제가 된다면 지우겠습니다.] 4학년 1학기가 종강한 후 아직 부족하다는 것을 깨닫고 교육기관을 찾아다녔다. 그 중 네이버 부스트캠프는 유명하고, 후기 또한 자자했다. 구글링, 유튜브, 밋업, 설명회를 모두 찾아 본후 지원했다. 작년부터 cs문제 10문제와 코테 문제 2문제가 나온다고 후기에 글이 있었다. 부랴부랴 cs를 위해 cs50을 수강하고 https://velog.io/@dumi33/series/%EB%AA%A8%EB%91%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B3%BC%ED%95%99CS50 시리즈 | 모두를 위한 컴퓨터 과학_CS50 - dumi33.log 1. 버블정렬 버블 정렬은 거품이 떠오르듯 큰..

[Python/프로그래머스]순위_그래프

https://programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 코드 : from collections import defaultdict def solution(n, results): answer = 0 win_graph = defaultdict(set) # 이긴 선수 lose_graph = defaultdict(set) # 진 선수 for winner, loser in results : win_graph[loser].add(winner) lose_graph[winner].add(loser) for i in range(1,n+1) ..

[Python/프로그래머스] 소수 찾기_완탐

https://programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 코드 : from itertools import permutations # 소수 판별 def is_prime_number(x) : if x

[Python/프로그래머스]모의고사_완탐

https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 코드 : def solution(answers): answer = [] supo1 = [1,2,3,4,5] supo2 = [2,1,2,3,2,4,2,5] supo3 = [3,3,1,1,2,2,4,4,5,5] cnt = [0,0,0] for i in range(len(answers)) : if answers[i] == supo1[i%5] : cnt[0] +=1 i..

[Python/프로그래머스]단속 카메라_Greedy(그리디)

https://programmers.co.kr/learn/courses/30/lessons/42884 코딩테스트 연습 - 단속카메라 [[-20,-15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 1. 빨리 끝나는 순으로 정렬한다. 2. 카메라를 가장 처음에 둔다. 3. 구간 시작보다 카메라가 이전에 있다면 3-1. 끝나는 곳에 카메라를 설치한다. 코드 : def solution(routes): answer = 0 routes.sort(key = lambda x : x[1]) # 빨리 끝나는 순으로 정렬 camera = -30001 for route in routes : if camera < route[0] : # 시작위치보다 전에 카메라가 있다면 answe..

[Python/프로그래머스]섬 연결하기_Greedy(그리디)

https://programmers.co.kr/learn/courses/30/lessons/42861 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr Kruskal 알고리즘을 이용해 풀이하였다. 1. 비용이 작은 순으로 정렬한다. 2. connect set을 만들어 연결 여부를 확인한다. 3. while문을 통해 전부 연결될 때까지 돌린다. 3-1. cost에 이미 있으면 continue 3-2. cost에 없으면 connect 에 넣고 비용을 더한다. 4. 비용 반환 코드 : def solution(n, costs): answer = 0 costs.sort(key = lambda x : x[2]) # 비용..

[Python/프로그래머스]구명보트_Greedy(그리디)

https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 인덱스를 이용해서 풀이한다. 직접 pop해서 풀면 효율성에서 실패한다고 한다. 코드 : def solution(people, limit): answer = 0 people.sort() i ,j = 0, len(people)-1 # i : 가장 마른 사람, j : 가장 뚱뚱한 사람 while i

[Python/프로그래머스]큰 수 만들기__Greedy(그리디)

https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr while (최근에 넣은 수 보다 지금 넣는 수가 더 크다면 ): pop을 해준다. 그게 현재 가장 최적의 값이니까!! 코드 : def solution(number, k): answer = [] for num in number : while k > 0 and answer and answer[-1] < num : answer.pop() k -= 1 answer.append(num) return ''.join(answer[:len(answer)-k]) 문제를 풀고 든 생각 : 왜 반환할 때 [:len(answer)-k]일까? 그냥 [:-k] ..

[Python/프로그래머스]조이스틱_Greedy(그리디)

https://programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 코드 : def solution(name): # 조이스틱 조작 횟수 answer = 0 # 기본 최소 좌우이동 횟수는 길이 - 1 min_move = len(name) - 1 for i, char in enumerate(name): # 해당 알파벳 변경 최솟값 추가 answer += min(ord(char) - ord('A'), ord('Z'..