본문 바로가기

문제 풀이/소프티어 (Softeer)9

[Python] 소프티어 : 플레이페어 암호 https://softeer.ai/practice/info.do?idx=1&eid=804&sw_prbl_sbms_sn=162388 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 💡 문제 풀이 전형적인 구현 문제이다. key에 맞춰서 5x5 짜리 판을 초기화해 주고, 특정 알파벳의 위치를 저장한 테이블을 초기화한다. 이후 2자리로 잘라준다음 요구사항에 맞춰서 구현하면 된다. 주의할 점은 X가 단 하나 남았을 경우 XX가 만들어진다는 점과 J를 사용하지 않는다는 점이다. ✔️ 느낀 점 크게 어려울 것 없는 문제였다. 💻 코드 import sys ; input = sys.stdin.readline from collections import deque ALPHABET = ".. 2023. 3. 5.
[Python] 소프티어 : 징검다리 https://softeer.ai/practice/info.do?idx=1&eid=390 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 💡 문제 풀이 기본적인 DP 문제이다. 이번 DP 리스트에서는 i번째 징검다리까지의 최댓값을 넣어주면 된다. 따라서, 이번 징검다리를 건널 때 현재 값과 이전 값에서 1 추가한 값과 비교해 주면 된다. ✔️ 느낀 점 기본적인 DP 문제이다! 문제 설명이 딱히 친절하지 않아서 어떻게 할까 고민하다가 쓱 풀었는데 맞았다. 💻 코드 import sys ; input = sys.stdin.readline n = int(input()) stones = list(map(int, input().split())) DP = [1] * n for i .. 2023. 3. 5.
[Python] 소프티어 : 마이크로서버 https://softeer.ai/practice/info.do?idx=1&eid=628&sw_prbl_sbms_sn=157452 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 💡 문제 풀이 투포인터(?) 문제이다. 요청의 크기가 300 ~ 900이고 서버는 900을 넘어가면 안 되기 때문에 결국 3가지 경우로 나뉜다. 한 서비스가 600을 넘어가는 경우. 다른 서비스를 추가할 수 없어서 서버 하나를 준다. 300짜리 서비스가 3개 들어오는 경우. 그 외 두 서비스가 900이하의 메모리를 잡아먹는 경우 따라서 투 포인터를 따라가면서 계산해주면 된다. ✔️ 느낀 점 처음에 deque를 이용해서 조건문으로 해결하려고 했다. 하지만 25점짜리 풀이었고 오답을 절대로 찾을 .. 2023. 2. 21.
[Python] 소프티어 : 거리 합 구하기 https://softeer.ai/practice/info.do?idx=1&eid=635&sw_prbl_sbms_sn=157103 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 💡 문제 풀이 그래프 탐색 문제이다. 해결하지 못했다. ✔️ 느낀 점 보자마자 플로이드-워샬이 생각나서 접근했지만 시간초과로 실패 (O(n^3)), DFS로 접근했는데 중간 계산 로직을 구현하지 못해서 실패, 다익스트라로 접근했는데 개선된 버전을 사용해도 시간초과로 실패 (O(E^2logE)) DFS가 두 번 들어가면 풀린다고 하는데 솔직히 좋은 문제인지는 잘 모르겠다. 💻 코드 import sys input = sys.stdin.readline INF = int(1e9) n = int(inp.. 2023. 2. 20.
[Python] 소프티어 : 이미지 프로세싱 https://softeer.ai/practice/info.do?idx=1&eid=627&sw_prbl_sbms_sn=156768 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 💡 문제 풀이 아주 가벼운 그래프 탐색 문제이다 (BFS) BFS로 풀었고 DFS도 가능하다. ✔️ 느낀 점 많이 그래프 탐색을 풀어봤다면 어렵지 않은 문제이다. 💻 코드 import sys input = sys.stdin.readline moves = [(1,0), (0,1), (-1,0), (0,-1)] h, w = map(int, input().split()) board = [list(map(int, input().split())) for _ in range(h)] q = int(inpu.. 2023. 2. 20.
[Python] 소프티어 : 로드 밸런서 트래픽 예측 https://softeer.ai/practice/info.do?idx=1&eid=629&sw_prbl_sbms_sn=156249 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 💡 문제 풀이 구현 문제이다. 노드에 접근하는 순서가 존재하고 존재에 맞춰서 요청을 처리해 주면 된다. 1000건의 요청이 들어왔고, 루트 밸런서에 3, 5, 6번 밸런서가 연결되어 있으면 각 밸런서에 공통적으로 1000 // 3건 만큼 요청을 수행할 것이고 순서대로 진행되야 하니 1000 % 3 만큼 각 노드에 순서대로 1만큼 추가해 주면 된다. ✔️ 느낀 점 문제가 이해 안 가서 오래 걸렸고 중간에 순서가 있다는 걸 알아채지 못해서 시간을 많이 소비하였다. 그냥 재귀적으로 풀면 무조건 시간.. 2023. 2. 19.