Lofi Music 10%
단계별로 풀어보기 백준_3052번
·
BaekJoon Reivew
나머지문제는 다음과 같습니다. 제목이 나머지인 만큼 뭔가 나머지로 독립적인 요소의 개수만 카운트 하는 것 같습니다.문제를 요약하자면 42로 나누었을 때 나머지 중 겹치지 않은 수의 개수 입니다.그렇다면 입력값을 42로 나누었을 때의 값들이 서로 다른 몇 개의 값이 있는지 출력하는 것 입니다.  저의 알고리즘은 다음과 같습니다.입력은 10개로 고정되어 있습니다. 따라서 입력을 받음과 동시에 42로 나누고 나머지를 새로운 리스트에 넣습니다.이 작업을 10번 반복합니다. 그렇다면 리스트에서는 입력값을 42로 나눈 나머지의 값들이 중복해서 들어가거 있거나 중복되지 않게끔 들어가 있을 것 입니다. 여기서 중복만 제거한다면? 저희가 원하는 결과를 얻을 수 있습니다. 그렇다면 여기서 어떻게 해야 할까요? 일일이 딕셔..
단계별로 풀어보기 백준_5597번
·
BaekJoon Reivew
과제 안 내신 분...? 문제는 다음과 같습니다. 반에는 총 30명의 학생이 있습니다. 과제를 제출할 때 본인의 번호를 말하고 제출하는 것 입니다.28개의 input은 과제를 한 학생으로 하고 나머지 학생은 과제를 하지 않은 학생으로 생각하면 이해하기 좋습니다. 그렇다면 과제를 하지 않은 나머지 두명은 어떻게 찾을까요? 저의 알고리즘은 30개의 빈칸을 만들어 놓습니다. 이후 과제를 제출한 사람만 표시하는 것이죠 하지만 이 때 저는 표시를 remove() 즉 삭제를 할 것 입니다. 사실 30개의 빈칸 종이는 벌점 리스트가 될 것 이고, 결국 마지막에 남은 학생 2명은 결국 과제를 제출하지 않은 학생입니다. 이를 코드로 표현해보겠습니다.L1 = list()for i in range(1,31): L1.a..
단계별로 풀어보기 백준_10813번
·
BaekJoon Reivew
공 바꾸기 문제는 다음과 같습니다.   이전 문제와 매우 비슷한 유형입니다. 참고하시면 좋을 거 같습니다.https://edu-data.tistory.com/78 단계별로 풀어보기 백준_10810번공 넣기문제는 다음과 같습니다.  문제를 요약하자면 바구니를 리스트라고 표현하고, 리스트안에 계속해서 업데이트를 해서 최종적으로 수정 된 리스트가 올바르게 출력되는 프로그램을 작성edu-data.tistory.com  문제를 요약하자면, 1부터N만큼의 바구니를 생성하고 M번 입력을 받습니다. A,B로 입력을 받는다고 하였을 때 입력 받은 바구니 숫자를 서로 바꾸는 것 입니다. 여기서 중요한 개념인 교환 매핑이 나옵니다. 먼저 저의 해답 코드는 다음과 같습니다.L=[]N, M = map(int,input().sp..
단계별로 풀어보기 백준_10810번
·
BaekJoon Reivew
공 넣기문제는 다음과 같습니다.  문제를 요약하자면 바구니를 리스트라고 표현하고, 리스트안에 계속해서 업데이트를 해서 최종적으로 수정 된 리스트가 올바르게 출력되는 프로그램을 작성하는 문제입니다. 이 게시글 부터는 예제 입력 부분에서 입력을 받는 부분은 언급하지 않겠습니다.저의 알고리즘은 다음과 같습니다. 먼저 N만큼의 0으로 채워진 리스트를 생성합니다.이후 M만큼의 반복을 하며 받은 M이라는 리스트에서 M[0], M[1], M[2]를 각각 인덱싱 합니다.이후 단순하게 N만큼 0으로 채워진 L리스트에 그 수만큼 값을 할당 해줍니다. L = []A, B = map(int, input().split())for _ in range(A): L.append(0)for _ in range(B): M = ..
단계별로 풀어보기 백준_2562번
·
BaekJoon Reivew
최대값 문제는 다음과 같습니다.  문제는 9개의 서로 다른 자연수가 주어질 때, 이들 중 최대값을 찾고 그 자리의 인덱스 또한 출력하면 되는 문제입니다. 이 문제는 시간복잡도를 보다 어렵게 요구하여 최적의 알고리즘을 요구할 순 있지만, 아직 단계별로 풀어보기 초반인 만큼 그 정도의 요구인 것은 아닌 거 같습니다. 이유는 입력이 9개로 제한 되어 있습니다. 따라서 시간복잡도를 생각하지 않고 작성하셔도 될 거 같습니다. L = list()for a in range(9): A = int(input()) L.append(A)print(max(L))print(L.index(max(L))+1) 이번 코드에서는 max(L)까지는  저번 게시글이랑 똑같습니다. 다만 L.index(max(L))을 처음 접해보..
단계별로 풀어보기 백준_10818번
·
BaekJoon Reivew
최소, 최대문제는 다음과 같습니다.  N개의 정수가 첫째 줄에 주어집니다. 이후 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어집니다. 이때 주의 해야 할 점은 N의 범위가 (1시간 복잡도가 초과 될 거 같습니다. 따라서 처음에는 최대, 최소 max() , min() 사용하지 말고 보다 빠른 최대, 최소 탐색이 있는지 확인할 것 입니다. 하지만 정렬의 첫 인덱싱, 마지막 인덱싱 또한 정렬을 해야 하므로 O(NlogN)이 소요됩니다. 따라서 가장 최적의 시간은 max()와 min()을 바로 구하는 것 입니다.왜냐하면 o(N)이 여러번 소요 되어서 매우 비효울적인 코드처럼 보이지만 사실 O(N) + O(N) 은 O(N)과 같습니다.물론 N이 inf 하다는 개념에서 이지만, 일반적으로 O(N)과 같다고 표용..