알고리즘 110

[Python][SWEA] 1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기

🗒️ 파이썬 코드 풀이T = int(input())for tc in range(1,T+1): N = int(input()) lst = list(map(int,input().split())) score = [0] * 101 for ls in lst: score[ls] += 1 mx = max(score) mx_idx = 0 for i in range(len(score)): if mx == score[i]: mx_idx = max(mx_idx,i) print(f"#{tc} {mx_idx}") 1. 0~100까지 길이의 리스트를 만들어준다.  각각의 인덱스 번호가 점수가 되는 것이다.ex) 0 인덱스 = 0 점 2. 입력..

[Python][SWEA] 1954. 달팽이 숫자 D2

🗒️ 파이썬 코드 풀이T = int(input())for tc in range(1,T+1): N = int(input()) lst = [[0]*N for _ in range(N)] di,dj = [0,1,0,-1],[1,0,-1,0] i = j = k = 0 lst[i][j] = 1 cnt = 2 while cnt  1. di,dj 방향으로 문제를 푸는 방식이다. 2. 반복횟수는 cnt의 값이 N*N까지로 설정한다. 3. ni,nj의 값을  동-남-서-북 방향으로 진행 시킨다.  (처음 시작은 동쪽부터) 4. 범위는 0~N 까지이고 lst[ni][nj] = 0 인 지역만 가능하다. i,j 값은 조건에 통과된 ni,nj로 바꿔주고 새로운 lst[i][j]의 값에 cn..

[Python][SWEA] 20728. 공평한 분배 2 D3

🗒️ 파이썬 코드 풀이T = int(input())for tc in range(1,T+1): N,K = map(int,input().split()) lst = list(map(int,input().split())) lst.sort() candle_mn = lst[K-1]-lst[0] for i in range(1,len(lst)-K+1): tmp = lst[i:i+K] candle_mn = min(candle_mn,(tmp[K-1]-tmp[0])) print(f"#{tc} {candle_mn}") 1. 투포인터 알고리즘 방식으로 진행한다. 2. 우선 lst를 오름차순으로 정렬해준다. 3. candle_mn (최소값)을 초기값으로 설정한다. 4. ..

[Python][SWEA] 1859. 백만 장자 프로젝트 D2

🗒️ 파이썬 코드 풀이T = int(input())for tc in range(1,T+1): N = int(input()) lst = list(map(int,input().split())) u_lst = lst[::-1] max = u_lst[0] ans = 0 for i in range(1,len(u_lst)): if u_lst[i] > max : max = u_lst[i] else : ans += (max-u_lst[i]) print(f"#{tc} {ans}") 1.(문제점)0 인덱스에서 순차적으로 하면, 최대값이 계속 갱신될 수 있다는 생각을 하게된다.최대값이 갱신되면, 과거의 최대값은 무용지물이 ..

[Python][SWEA] 10580. 전봇대 D3

🗒️ 파이썬 코드 풀이from itertools import combinationsT = int(input())for tc in range(1, T+1): N = int(input()) lst = [list(map(int,input().split())) for _ in range(N)] connection = 0 combi = list(combinations(lst,2)) for c in combi: if c[0][0] > c[1][0] and c[0][1] c[1][1] : connection += 1 print(f"#{tc} {connection}") 1. (a1,b1) 과 (a2,b2) 이렇게 전선의 위치가 있을때 a1 2. itertools를 사용해..

[Python][SWEA] 3809. 화섭이의 정수 나열 D3

🗒️ 파이썬 코드 풀이T = int(input())for tc in range(1, T+1): N = int(input()) value = "" while True : value += ''.join(list(input().split())) if len(value) == N : break n = 0 while True: if str(n) not in value: break n += 1 print(f"#{tc} {n}") 1. 우선 입력구조가 다른 문제와 다르다. (10개의 입력이 넘어가면 엔터가 있음)이런 경우  반복문을 돌려서 해당값을 받아줘야한다.  N의 개수를 입력 받기 때문에,  value의 크기..

[Python][프로그래머스] 최대공약수와 최소공배수

🗒️ 파이썬 코드 풀이def gcd(n,m): # 최대공약수 if m==0: return n return gcd(m,n%m)def lcm(n,m) : # 최소공배수 return (n*m)//gcd(n,m)def solution(n, m): gc = gcd(n,m) lc = lcm(n,m) return [gc,lc] 1. 먼저 최대공약수를 재귀함수를 이용해서 구해준다.  2. 이후 최소공배수를 최대공약수를 이용해서 구해준다. 🧐 문제 코멘트문제가 어렵지는 않는데, 최대공약수와 최소공배수의 값을 구하는 방식을 꼭 기억하자막상 문제 풀때 생각 안나면 멘탈이 깨질듯 ...📚 문제문제 설명두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수,..