2024/06 26

[소프티어 6279번] 스마트 물류

Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.aiimport sysinput = sys.stdin.readline# P - 로봇, H - 부품n, k = map(int,input().split())area = list(input())visited = [False]*nfor i,value in enumerate(area): if value == 'P': for j in range(i-k,i+k+1): if 0  이번 문제는 로봇과 부품으로 이루어진 1차원 배열에서 로봇이 자신을 기준으로 k 거리만큼의 부품을 집을 수 있다고 했을 때, 부품을 집을 수 있는 로봇의 최대 수를 구하는 문제이다. 처음에는 DFS를 사용하여 풀이하려고 했는데, 생각보다 완전..

Algorithm/Greedy 2024.06.25

[소프티어 6255번] 플레이페어 암호

Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai import sysfrom collections import dequeinput = sys.stdin.readline# 플레이페어 암호는 알파벳으로 이루어진 어떤 문자열을 암호화하는 방법# 알파벳으로 이루어진 문자열인 Key가 필요함# 한번에 두 글자 단위로 암호화를 진행# 5x5 크기의 표를 사용, 알파벳 26개를 모두 담기에는 칸이 1개 부족하여 I와 J를 동일하게 생각(편의상 J가 아예 X)area = [['']* 5 for _ in range(5)]alpa = [chr(x) for x in range(ord('A'),ord('Z')+1) if x != ord('J')]alpa_set = set()message = deque(li..

[소프티어 7727번] 함께하는 효도

Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.aiimport sysinput = sys.stdin.readline# m명의 친구를 불러 나무에서 열매를 수확# n x n 크기의 격자에 모든 칸에 나무가 심어져있고, 각 나무마다 가능한 열매 수확량이 주어져 있음# 친구들은 서로 다른 위치에서 출발하여 1초에 1칸씩 상하좌우로 움직임# 최종적으로 모든 열매 수확량의 합을 최대로 만들고자 함# 한 나무에 여러 친구가 방문하게 되더라도 열매는 딱 한번만 수확 가능# 또한, 친구들끼리 이동하는 도중 만나는 것도 가능# m명의 친구들이 3초동안 최대로 얻을 수 있는 열매 수확량의 총합n, m = map(int,input().split())area = [list(map(int,input().spl..

Algorithm/DFS 2024.06.24

[소프티어 6247번] 자동차 테스트(HSAT 7회 정기 코딩 인증평가 기출)

Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai import sysinput = sys.stdin.readline# 데이터의 중앙값을 사용하여 자동차의 평균적인 연비를 파악# n대의 자동차를 새로 만들었지만 3대의 자동차만 테스트할 수 있는 상황# n대의 자동차의 실제 연비 값이 주어졌을 때, q개의 질의에 대해 임의로 3대의 자동차를 골라 테스트하여# 중앙값이 mi값이 나오는 서로 다른 경우의 수# n개의 자동차 연비는 서로 다른 값 !n, q = map(int,input().split())values = sorted(list(map(int,input().split())))length = len(values)index = 1test_dict = dict()test_inputs = ..

Algorithm/Sorting 2024.06.23

[소프티어 6266번] 회의실 예약(21년 재직자 대회 예선)

Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.aiimport sysinput = sys.stdin.readline# 회의실은 9시부터 18시까지만 사용 가능# 회의는 정확히 한 회의실을 연속한 일정 시간 동안만 점유(회의실,시작시간,종료시간)# 회의의 시작과 종료 시각은 시간 단위로만 설정 가능# 한 회의가 끝나는 시각에 다른 회의가 시작하는건 가능# 길이가 0인 회의는 존재 X# M개의 회의가 주어졌을 때# 회의실 별로 비어있는 시간대를 출력n, m = map(int,input().split())name_list = sorted(list(input().rstrip() for _ in range(n)))reser_dict = dict() for name in name_list: ..

카테고리 없음 2024.06.23

[소프티어 6250번] 성적 평가(HSAT 5회 정기 코딩 인증평가 기출)

import sysinput = sys.stdin.readline# N명의 인원이 참여하는 스터디# 3개의 대회, 모든 구성원이 각 대회에 참여# 참가자는 각 대회에서 0이상 1000이하의 정수인 점수를 얻음# 한 대회에서 둘 이상의 참가자가 동점이 나오는 경우도 있음# 각 대회 별로 등수 및 최종 등수를 매김# 동점인 경우에는 공동 등수, 아닌 경우에는 일반 등수# 즉, 등수 = 나보다 점수가 높은 사람의 수 + 1# 각 참가자의 대회별 등수 / 최종 등수 출력# 입력 최대 범위 : 10^5n = int(input())score_list = []sum_list = [0] * nfor _ in range(3): init = list(map(int,input().split())) for i, ..

[소프티어 7374번] 진정한 효도

Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.aiimport sysinput = sys.stdin.readline# 남우 부모님의 농사일을 도우려고 함# 남우에게 할당된 땅은 3x3 크기의 격자# 1  이번 문제는 3x3 크기의 격자에서 1x3 크기의 영역 안의 값들이 모두 같은 블럭을 1개 이상 만들기 위해 필요한 최소 비용을 구하는 문제이다. 비용을 구하기에 앞서서 격자 중에서 값이 모두 같은 1x3 크기의 블럭이 있는지 확인하기 위해 가로와 세로 기준으로 점검하는 함수(check_row / check_col)을 선언하였고, 모든 행과 열을 순회하면서 점검해본 결과 존재할 경우(available) 곧바로 0을 출력하도록 구현하였다. 만약에 값이 모두 같은 1x3 크기의 블럭이 없다..

[소프티어 6289번] 우물 안 개구리

Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.aiimport sysinput = sys.stdin.readline# 헬스장에서 N명의 회원이 운동을 하고 있음# 각 회원은 1부터 N사이의 번호가 부여# i번 회원이 들 수 있는 역기의 무게는 Wi# 회원들 사이에는 M개의 친분 관계 (Aj, Bj)가 있음 (Aj와 Bj가 친분관계)# i번 회원은 자신과 친분 관계가 있는 다른 회원들보다 들 수 있는 # 역기의 무게가 무거우면 자신이 최고라고 생각# 단, 누구와도 친분이 없는 멤버는 본인이 최고라고 생각N, M = map(int,input().split())weights = [0] + list(map(int,input().split()))graph = [[] for _ in range(N..

[소프티어 6270번] GBC

Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 이번 문제는 총 100m의 'N개의 구간 및 제한 속도'와 'M개의 테스트 구간 및 속도'가 주어졌을 때 테스트한 구간의 속도를 기준으로 가장 크게 제한 속도를 넘어간 값을 구하는 문제이다. 본 문제를 해결하기 위해서 모든 구간과 속도를 Queue에 담고(시간복잡도를 최소화하기 위해 deque 사용), 구간의 길이에 따라 경우를 나눠서 분기처리 해주었다.

[소프티어 6246번] 순서대로 방문하기(HSAT 7회 정기 코딩 인증평가 기출)

Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai import sysfrom collections import deque# 0 - 빈칸, 1 - 벽# 이동은 상하좌우 중 인접한 칸만 가능# 한번 지났던 지점은 다시 방문 X# 방문해야 하는 지점의 첫 지점이 출발점, 마지막 지점이 도착점# 순서대로 방문해야 하는 칸을 이동하는 시나리오 수input = sys.stdin.readlinen, m = map(int,input().split())area = [list(map(int,input().split())) for _ in range(n)]visited = [[False]*n for _ in range(n)]visit_list = [] # 방문해야 하는 지점들을 저장하는 배열answer ..

Algorithm/DFS 2024.06.18