SWEA4 SWEA 1983 조교의 성적 매기기 (핵심 : 순서와 값 함께 저장하는 방법) 💡문제 분석 요약주어진 학생들의 중간, 기말, 과제점수를 비율별로 종합하여 등급을 매긴다.등급은 총 10개 등급이 있고, 각 등급마다 10% 학생들이 차지하게 된다. (ex. A+ 10%, A0 10% ...)이때, 특정 순서에 있는 학생의 학점을 출력한다.💡알고리즘 설계처음엔 dictionary를 생각했다. 왜냐면 학생의 "순서"와 value를 함께 저장하는 방법이라고 생각했기 때문.그래서 student[순서] = A+ 이런느낌으로 저장하려 했는데, 정렬 부분에서 잘 안됐다.따라서 우린 students에 튜플 자체를 append하는 방식을 사용한다. (순서, 학점) 형식으로 튜플을 통째로 append해준다.💡코드t = int(input())for test_case in range(t): n,.. 2024. 10. 4. SWEA 2001 파리 퇴치 (핵심 : i+x, j+y) 💡문제 분석 요약N*N 파리 box에서 파리를 딱 내리치면 M*M만큼의 칸을 내리칠 수 있어서 해당 칸의 파리를 잡을 수 있다.이때, 잡을 수 있는 파리의 최대 수를 구한다.💡알고리즘 설계보자마자 4중 for문은 아닐거고 ...... 라고 시작했는데 결국 다른 풀이를 생각해내진 못했다.물론 4중 for문이 될 것이라는 확신은 있었다. N의 크기가 15고, M의 크기는 2~N 이었기 때문에 최대 O(225)일 것이라고 생각해서 될 거라고 봤는데 사실 크기가 커지면 쓸모 없는 코드니까 .... 4중 for문은 피하려고 했다.사실 M*M 박스는 움직이면서 이전과 겹치는 부분이 있으니까 그 부분만 빼고 나머지 새로운 열 혹은 행에 대해서 더해주면 더 효율적일 것이라고 생각했는데 코드를 생각해내진 못했다.💡.. 2024. 10. 1. SWEA 2007 패턴 마디의 길이 (핵심 : startswith) 💡문제 분석 요약주어진 문자열에 대해서 반복되는 패턴의 길이를 출력한다.문자열은 30글자가 주어지고, 패턴은 최대 10글자이다.💡알고리즘 설계한글자씩 슬라이싱 하면서 슬라이싱된 패턴이 반복되는지 확인한다.이때 "반복된다"라는 것은 이어붙였을 때, 이게 들어있는지 확인하면 된다.예를들어 sam이 패턴이 되려면 samsamsam이렇게 되어야하는거지, sam1sam2sam3 이건 패턴이 아니다.💡코드T = int(input())for t in range(T): lst = input() # 문자열 길이는 30 고정 for i in range(1, 11): # 1부터 10까지 마디 잘라봄 (마디 최대 길이가 10) pattern = lst[:i] # 이 패턴이 "연속으로" 반복되느냐?.. 2024. 9. 30. SWEA 1859 백만 장자 프로젝트 (핵심 : 맨 뒤에서부터 계산하기) 💡문제 분석 요약사재기를 하기 위해서 사야할 때랑 팔아야할 때를 알아야함.쉽게 말해서, 내가 지금 샀을 때보다 나중에 비싸게 팔 수만 있다면 무조건 사는 게 이득. 즉, 오늘보다 비싼 날이 뒤에 있기만 하면 구입.💡알고리즘 설계맨 뒤에서부터 max값을 업데이트해가면서 이익을 계산한다.만약 .... max1 .... max2 이런식으로 있다고 해보자. max1 > max2라고 하면, 앞에서 산건 max1때 털어내겠고, 그럼 뒤에서 산건 max2때 털어낸다. 만약 max1 따라서 max2에 깃발 꽂고, 뒤에서부터 앞으로 계산해간다. max2부터 max1까지 있는 모든 물건 다사고 max2때 털어내면 되니까 이익 = max2 - element 이런식으로 차익을 계산하면 된다.💡코드T = int(input.. 2024. 9. 29. 이전 1 다음 반응형