Python 390

[programers] 프로그래머스(파이썬) : 점프와 순간 이동

문제 코딩테스트 연습 - 점프와 순간 이동 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈 programmers.co.kr 알고리즘 - 0부터 n까지 가는 최소 비용은 n부터 0까지 가는 최소 비용과 같다. - n이 짝수라면 비용이 들지 않는다.(*2 이기 때문에) - n이 홀수라면 한 칸 점프한다. - n이 2보다 클 때까지만 반복한다. - 반복문이 끝나고 비용을 출력한다. 코드 def solution(n): ans = 1 # n부터 0까지 가는 최소 비용 구하기 while n > 2: # n이 짝수라면 비용이 들지 않는다. if n % 2 == 0: ..

[baekjoon] 백준 10819번(파이썬): 차이를 최대로

문제 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 알고리즘 - 백 트래킹을 통해 문제를 수행한다. - idx를 temp에 저장하고 삭제하는 것을 백트래킹 한다. - temp에 저장된 idx가 n 개라면 조건에 맞게 수를 더하고 answer에 저장한다. - answer의 최댓값을 출력한다. 코드 import sys def back_tracking(x): # x가 n개라면 => x == len(temp) # 조건에 맞게 수를 더해준다. if x == n: answer.append(sum(abs(m[temp[i + 1]] - ..

CodingTest/Baekjoon 2022.04.25

[programers] 프로그래머스(파이썬) : 영어 끝말잇기

문제 코딩테스트 연습 - 영어 끝말잇기 3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3] 5 ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"] [0,0] programmers.co.kr 알고리즘 - 반복문을 통해서 단어를 확인한다. - 규칙에 어긋나면 반복을 멈춘다. - 확인한 단어와 입력받은 단어가 같으면 틀린 사람이 없는 것이다. - 틀린 사람의 번호와 차례는 ..

[programers] 프로그래머스(파이썬) : 배달

문제 코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr 알고리즘 - bfs 탐색을 통해 문제를 수행한다. 코드 # 23:15 import sys from collections import deque def solution(N, road, K): answer = 0 graph = [[] for _ in range(N + 1)] visited = [sys.maxsize] * (N + 1) visited[1] = 0 for a, b, c in road: graph[a].append([b, c..

[programers] 프로그래머스(파이썬) : 신규 아이디 추천

문제 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 알고리즘 - 단계별로 알고리즘을 작성하면 된다. - 다른 사람들의 풀이를 보니 정규표현식에 대해 공부를 해야 할 것 같다. 코드 # 21:20 def solution(new_id): answer = '' l = len(new_id) # 반복문을 통해 id를 확인 for i in range(l): # 1단계 if new_id[i].isupper(): answer += new_id[i].lower() # 3단계 elif len(answer) > 0 an..

[programers] 프로그래머스(파이썬) : 로또의 최고 순위와 최저 순위

문제 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 알고리즘 - 반복문을 통해 로또 번호를 확인한다. - 로또 번호가 당첨 번호라면 최고 순위 번호의 카운트, 아니라면 최저 순위 번호의 카운트한다. - 최고 순위일 때의 랭크와 최저 순위일 때의 랭크를 출력한다. 코드 def solution(lottos, win_nums): answer = [lottos.count(0), 6] rank = [6, 6, 5, 4, 3, 2, 1] cnt = 0 # 반복문을 통해 로..

[programers] 프로그래머스(파이썬) : 소수 만들기

문제 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr 알고리즘 - 반복문을 통해 3개의 수를 확인한다. - 3개의 수를 더한 값이 소수라면 카운트한다. 코드 def primenumber(x): for i in range(2, x):# 2부터 x-1까지의 모든 숫자 if x % i == 0:# 나눠떨어지는게 하나라도 있으면 False return False return True def solution(nums): answer = 0 # 반복문을 통해 3가지 수를 확인 for i in rang..

[baekjoon] 백준 18428번(파이썬): 감시 피하기

문제 18428번: 감시 피하기 NxN 크기의 복도가 있다. 복도는 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복 www.acmicpc.net 알고리즘 - 백트래킹을 통해 모든 위치를 탐색한다. - 3개의 장애물을 설치했다면 선생님의 위치에서 bfs 탐색을 하여 감시가 가능한 곳에 학생이 있는지 확인한다. - 3개의 장애물 설치 과정은 다음과 같다. - 모든 빈 공간에 장애물을 3개 설치한다. - 장애물을 설치한 곳에 "X"를 "O"로 초기화한다. - 장애물이 3개 설치한 후 탐색이 끝나면 백트래킹을 통해 "O"를 "X"로 초기화한 후 다음 위치에 장애물을 설치한다. 코드 import sy..

CodingTest/Baekjoon 2022.04.23

[programers] 프로그래머스(파이썬) : 신고 결과 받기

문제 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 알고리즘 - 딕셔너리 형으로 신고받은 사람을 카운트한다. - 신고받은 사람의 횟수가 k개 이상일 경우 신고 한 사람을 카운트한다. 코드 def solution(id_list, report, k): id_dict = {i: 0 for i in id_list} report = list(set(report)) for i in range(len(report)): a, b = report[i].split(" ") id_dict[b] += 1 temp = []..

[baekjoon] 백준 19539번(파이썬): 사과나무

문제 19539번: 사과나무 첫 번째 줄에 모든 나무가 갊자가 바라는 높이가 되도록 물뿌리개를 통해 만들 수 있으면 “YES”를, 아니면 “NO”를 따옴표를 제외하고 출력한다. www.acmicpc.net 알고리즘 - 모든 나무의 합을 3으로 나누었을 때 0이 되지 않으면 물 뿌리개를 통해 만들 수 없는 나무의 높이인 것이다. - 반복문을 통해 2의 물 뿌리개의 횟수를 구한다. - 2의 물 뿌리개 횟수가 3으로 물을 뿌린 횟수보다 크다면 원하는 높이의 나무를 만들 수 있다. - 1의 물 뿌리개 횟수는 이미 이전에 3으로 나누어진 나무들이기 때문에 자동으로 뿌려진다. 코드 import sys n = int(sys.stdin.readline()) h = list(map(int, sys.stdin.readli..

CodingTest/Baekjoon 2022.04.22