softeer 19

[소프티어 6275번] 로봇이 지나간 경로(HSAT 1회 정기 코딩 인증평가 기출)

Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.aiimport sysinput = sys.stdin.readlinedx, dy = [-1,1,0,0], [0,0,-1,1]# L : 왼쪽으로 90도 회전# R : 오른쪽으로 90도 회전# A : 로봇이 바라보는 방향으로 2칸 전진(범위를 벗어나면 수행X)# 같은 칸을 2번 이상 방문하지 못하도록 명령# 출발지점을 포함한 로봇이 방문한 모든 칸을 지도에 표시# 로봇이 지도에 사수에 표시한 모든 칸들만을 방문하도록 조작# 1. 처음 로봇을 어떤 칸에, 어떤 방향으로 두어야 하는가 ?# 2. 이후 로봇에 어떤 명령어를 순서대로 입력해야 하는가 ?# 입력하는 명령어의 개수를 최소화 했을때 [첫번째 로봇의 위치 좌표], [방향], [명령어]h, w..

Algorithm/DFS 2024.06.27

[소프티어 6281번] 동계 테스트 시점 예측

Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.aiimport sysfrom collections import dequeinput = sys.stdin.readline# 아침에 출근해보면 테스트 차량들 위에 눈얼음이 생겨있음# 커다란 얼음이 녹고난 뒤에 테스트가 가능# 차량마다 당일의 테스트 가능 시점을 알기 위한 예측 프로그램 제작# N x M 크기의 격자 위에 눈 얼음의 모양을 작은 정사각형들이 집합되어 있는 모양으로 변환# 아침이 되면 기온이 상승하여 천천히 녹는다# 얼음은 상하좌우 중에서 적어도 2변 이상이 외부와 접촉했을 때 정확히 1시간만에 녹음# 얼음 내부에 있는 공간은 얼음 외부 공기와 접촉하지 않는 걸로 가정# 주어진 얼음이 모두 녹아서 사라지는데 걸리는 시간n, m =..

Algorithm/BFS 2024.06.27

[소프티어 6273번] 택배 마스터 광우

Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai import sysfrom itertools import permutationsinput = sys.stdin.readline# 레일의 순서를 조작해서 최소한의 무게만 들 수 있게 일을 함# N개의 레일, 각 레일은 Ni 무게 전용 레일로 주어진다.(같은 무게의 레일 X)# 레일의 순서가 정해지면 택배 바구니 무게(M)를 넘어가기 전까지 택배 바구니에 택배를 담아 들고 옮겨야 함# 레일 순서대로 택배를 담되, 바구니 무게를 초과하지 않은 만큼 담아서 이동하게 되면 1번 일한 것으로 쳐줌# (단, 택배는 순서대로 담아야 하므로 레일의 순서를 건너 뛸 순 없다)# 총 k번 일을 하는데 최소한의 무게로 일을 할 수 있도록 하자n, m, k ..

[소프티어 7594번] 나무 조경

Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.aiimport sysfrom itertools import combinationsinput = sys.stdin.readline# 최대 4번 인접해 있는 두 나무를 묶을 예정# 묶은 나무끼리는 서로 겹쳐서는 안됨# 두 나무가 묶였을 때 얻을 수 있는 아름다움은 '두 나무의 키의 합'과 동일# 묶인 쌍의 아름다움의 합을 최대로 만들려고 함n = int(input())heights = [list(map(int,input().split())) for _ in range(n)]dx, dy = [-1,1,0,0], [0,0,-1,1]answer = float("-inf")datas = []for i in range(n): for j in ra..

[소프티어 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, ..