문제 링크 : https://www.acmicpc.net/problem/2533문제 정보문제 개요 백준 2533번 사회망 서비스(SNS) 문제는 트리 형태의 SNS 네트워크에서 모든 사람이 최소한 한 명의 얼리 어답터(Early Adopter)와 연결되도록 하는 최소 얼리 어답터 수를 구하는 문제입니다.노드(사용자)들은 트리 형태로 연결되어 있습니다.각 사용자는 얼리 어답터(새로운 기술을 먼저 사용하는 사람) 또는 일반 사용자일 수 있습니다.최소한의 얼리 어답터를 선정하여 모든 일반 사용자가 최소 한 명의 얼리 어답터와 연결되도록 해야 합니다.해결 방법이 문제는 트리 DP(Tree DP) 기법을 활용하여 해결하였습니다.각 노드(사용자)가 얼리 어답터인 경우와 아닌 경우를 나눠서 탐색합니다.DFS(깊이 우..
문제 링크 : https://www.acmicpc.net/problem/1600문제 정보 문제 개요백준 1600번 말이 되고픈 원숭이 문제는 격자판에서 원숭이가 말의 이동을 일정 횟수(k번)만 사용할 수 있는 상황에서 (0,0)에서 (w-1, h-1)까지의 최단 거리를 구하는 문제입니다.원숭이는 일반적으로 상, 하, 좌, 우로 이동할 수 있습니다.단, 말의 움직임(체스 나이트의 이동 패턴)을 최대 k번까지 사용할 수 있습니다.도착점에 도달할 수 없으면 -1을 반환합니다. 해결 방법이 문제는 최단 거리 문제이므로 BFS(너비 우선 탐색)을 사용하여 해결하였습니다.일반적인 최단 거리 문제에서는 visited 배열을 2차원으로 사용하지만, 이 문제에서는 말처럼 움직일 수 있는 횟수(k)가 추가된 3차원 방문..
[Baekjoon] 단계별로 풀어보기 | 1차원 배열 | 8959 OX퀴즈 8958 OX퀴즈 파이썬 코드 답안 N= int(input()) for i in range(N): list=input() cnt=0 sum=0 for j in range(len(list)): if list[j]=='O': cnt+=1 if list[j]=='X': cnt=0 sum+=cnt print(sum) O, X로 이루어진 문자열을 list로 받기 list길이만큼 반복하고 list의 첫 번째 문자부터 O일 경우 cnt+1, X일 경우 cnt 0 초기화 틀린 내용이 있다면 댓글로 알려주세요 :) 문제의 자세한 내용은 백준 사이트를 확인해주세요 ;)
[Baekjoon] 단계별로 풀어보기 | 1차원 배열 | 1546 평균 1546 평균 파이썬 코드 답안 N= int(input()) list = list(map(int,input().split())) list1 = [i/max(list)*100 for i in list] print(sum(list1)/N) 작성한 코드 내용 N에다가 시험 본 과목의 개수를 입력 받습니다 list에다가 점수들을 입력받고 list1에다가 점수들을 문제에 맞게 연산해서 리스트로 만들어줬습니다 출력은 list1의 평균이 나오도록 했습니다 이번 문제는 연산 부분만 잘 작성하면 될 거 같아요 틀린 내용이 있다면 댓글로 알려주세요 :) 문제의 자세한 내용은 백준 사이트를 확인해주세요 ;)
[Baekjoon] 단계별로 풀어보기 | 1차원 배열 | 3052 나머지 3052 나머지 파이썬 코드 답안 list =[0 for _ in range(10)] for i in range(10): list[i]=int(input())%42 print(len(set(list))) 10개의 수를 입력받은 뒤, 그 값과 42로 나눈 나머지 중에 서로 다른 값이 몇 개 있는지 출력하는 문제 일단 전에 풀었던 문제랑 비슷하게 숫자들을 카운트 해야하기 때문에 리스트 하나 만들어 줍니다 반복문을 보자면, 리스트 인덱스 0부터 9까지 입력 받은 값에서 42를 나눈 나머지 값 대입 리스트를 set()함수에 넣어 중복된 건 없애버렸습니다 그리고 그 리스트의 인덱스 길이를 출력시켰어요 그런데 set(list) print(le..
[Baekoon] 단계별로 풀어보기 | 1차원 | 배열 2577 난이도가 코드업 기초 100제 종합 문제 정도로 올라간 느낌입니다. 천천히 풀어보도록 하겠습니다 2577 숫자의 개수 파이썬 코드 답안 A= int(input()) B= int(input()) C= int(input()) N=A*B*C list = [0 for j in range(10)] for i in range(9): list[(N%10)]+=1 N=int(N/10) if N==0: break for i in range(10): print(list[i]) 숫자 0~9 체크할 때는 리스트를 이용해서 많이들 하는 거 같아요 저도 비슷한 방법으로 작성해 보았습니다 반복문 코드를 보자면, N을 10으로 나눈 나머지 -> N의 일의 자리 N의 일..
[Baekjoon] 단계별로 풀어보기 | 1차원 배열 | 10818, 2526 반복문 다음 단계!! 1차원 배열 2문제 풀어볼까요 10818 최소, 최대 파이썬 코드 답안 N = int(input()) list = list(map(int,input().split())) print(min(list), max(list)) N은 사용하지 않았습니다 예제 입력처럼 하려고 작성했습니다 2526 최댓값 파이썬 코드 답안 list=[] for i in range(9): list.append(int(input())) print(max(list)) print(list.index(max(list))+1) 리스트로 입력값 받아주고 max()랑 list.index() 이용해서 출력했습니다 max(리스트명) : 리스트의 요소 ..
[Baekjoon] 단계별로 풀어보기 | 반복문 | 1110 반복문 마지막 파트! 1110번입니다. 1110 더하기 사이클 파이썬 코드 답안 N=int(input()) A=N cnt=0 while True: N= int(((N%10)*10)+(((N/10)+(N%10))%10)) cnt+=1 if N==A: break print(cnt) 문제 패턴 N = 68 십의 자리 : 원래 일의 자리(8)*10 > 십의 자리(8) 일의 자리 : 십의 자리(6) + 일의자리(8) > 두 합의 일의자리(4) : ((N/10)+(N%10)) 다음 N = 84 이렇게 돌아가는 패턴입니다! 규칙을 찾았으니 바로 식에 적용해보자면, N= int(((N%10)*10)+(((N/10)+(N%10))%10)) 십의 자리 : 원래 ..
[Baekjoon] 단계별로 풀어보기 | 반복문 | 10871, 10952, 10951 반복문 3문제입니다. 뒤로 갈수록 헷갈리니 집중해서 풀어볼까요? range(n) 은 0, 1, 2,... , n-2, n-1까지의 수열을 의미한다. 예를 들어 range(3) 은 0, 1, 2 인 수열을 의미한다. range(끝) range(시작, 끝) range(시작, 끝, 증감) 형태로 수열을 표현할 수 있다. 시작 수는 포함이고, 끝 수는 포함되지 않는다. [시작, 끝) 증감할 수를 작성하지 않으면 +1이 된다. 10871 X보다 작은 수 파이썬 코드 답안 N, X = map(int,input().split()) list =list(map(int, input().split())) for i in range(N):..
[Baekjoon] 단계별로 풀어보기 | 반복문 | 11021, 11022, 2438 단계별로 풀어보기 반복문 파트 이어서 3문제 풀어보도록 하겠습니다. for i in range(n) : #range(n)에 들어있는(in) 각각의 수에 대해서(for) 순서대로 i에 저장해 가면서... 이때의 for는 각각의 값에 대하여...라는 for each의 의미를 가진다고 생각할 수 있다. range(끝) range(시작, 끝) range(시작, 끝, 증감) 형태로 수열을 표현할 수 있다. 시작 수는 포함이고, 끝 수는 포함되지 않는다. [시작, 끝) 증감할 수를 작성하지 않으면 +1이 된다. 11021 A+B-7 파이썬 코드 답안 T =int(input()) for i in range(T): a, b = map..