CodingTest 432

[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

[baekjoon] 백준 16198번(파이썬): 에너지 모으기

문제 16198번: 에너지 모으기 N개의 에너지 구슬이 일렬로 놓여져 있고, 에너지 구슬을 이용해서 에너지를 모으려고 한다. i번째 에너지 구슬의 무게는 Wi이고, 에너지를 모으는 방법은 다음과 같으며, 반복해서 사용할 수 있 www.acmicpc.net 알고리즘 - 백트래킹을 통해 문제를 수행한다. - 에너지 구슬이 2개일 때까지 재귀적으로 탐색을 한다. - 에너지 구슬이 2개가 되면 그때의 최대 에너지 값으로 초기화한다. - 에너지 구슬이 2개가 아니라면 반복문을 통해 에너지 구슬을 확인한다. 여기서부터 백트래킹 부분 - i번째 구슬을 제거했을 때 나오는 에너지를 가지고 재귀적으로 탐색 - 재귀적인 탐색이 끝났다면 제거한 에너지 구슬을 추가하고 다시 반복한다. - 재귀적으로 탐색하는 과정에서 에너지를..

CodingTest/Baekjoon 2022.04.21

[baekjoon] 백준 13335번(파이썬): 트럭

문제 13335번: 트럭 입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트 www.acmicpc.net 알고리즘 - 반복문을 통해 다리의 모든 트럭이 지나갈 때까지 반복한다. - 모든 트럭을 확인하고 현재 다리에 있는 트럭과 다리를 건너려는 트럭의 무게가 다리의 하중보다 크다면 빈 공간을 추가한다. - 반대로 다리의 하중보다 작다면 트럭을 다리에 추가한다. - 위 방법을 반복하면 모든 트럭이 다 지나가고 다리의 칸이 0이 되어 반복이 멈춘다. - 이때 카운트를 출력한다. 코드 import sys n, w, l =..

CodingTest/Baekjoon 2022.04.20