파이썬 알고리즘 60

[파이썬] 프로그래머스 lvl2. 영어 끝말잇기

https://school.programmers.co.kr/learn/courses/30/lessons/12981 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이런식으로 이미 언급한 단어를 또 말하거나, 아니면 앞단어의 마지막 글자가 그 다음의 첫 글자랑 다르면 틀린 사람을 알려주면 된다. 1. 앞 단어의 마지막 글자가 그 다음의 첫 글자랑 다른 경우 for i in range(1, len(words)): if words[i][0] != words[i-1][-1]: 끝말잇기에서 첫번째 사람이 틀릴 리는 없으니까 두번째 사람부터 확인해준다. 2. 언급한 ..

[파이썬] SWEA 문제해결 1일차 - View

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV134DPqAA8CFAYh SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 2중 for 문으로 돌면서 왼쪽 옆 2개, 오른쪽 옆 2개를 확인해주면 되는 문제였다 T = 10 #int(input()) for tc in range(1, T+1): N = int(input()) arr = list(map(int, input().split())) cnt = 0 # 조망권 수 for i in range(2, N-2): # 조망권 확인 위치 # h = max(arr[i-2], arr..

[파이썬] SWEA 파스칼의 삼각형

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5P0-h6Ak4DFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 마지막 줄의 길이에 맞춘 NxN 2차원 배열을 만든 후, 그 안에 숫자를 넣는 방식으로 풀었다. T = int(input()) for tc in range(1, 1+T): n = int(input()) arr = [['' for _ in range(n)] for _ in range(n)] print(f'#{tc}') for i in range(n): for j in range(i+1): if j==..

[파이썬] SW 문제해결 기본 5일차 - Magnetic

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14hwZqABsCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 약간 무식하게 푼 문제... 발상은 이러하다) 세로 줄으로 봤을때, 가장 위쪽에 있는 자성체가 S극이면 자성체는 사라진다. 가장 아래쪽에 있는 자성체가 N극이면 자성체가 사라진다. 교착상태가 생기려면, 위쪽 자성체가 N극이고, 아래쪽 자성체가 S극인 상태가 하나 이상 있어야 한다. 그래서 일단 세로 줄을 하나씩 확인했다. for tc in range(1, 11): N = int(input()) ar..

[파이썬] 백준 15649 N과 M (1)

https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 이 문제를 풀때 가장 주의해야할 점은 1 2랑 2 1이 각각 다른 경우라는 것이다. 즉, 매번 used배열 값을 초기화해야한다. N, M = map(int, input().split()) arr = list(range(1, N+1)) used = [0]*N path = [0]*M def rcr(level): if level == M: print(*path) return for i in range..

[파이썬] 백준 11047 동전 0

https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 걸리는 시간은 똑같지만 코드 길이를 줄여봤다 일단 거스름돈 배열을 만들고, 가장 뒤부터 배열을 순회하면서 거스름돈이 나누어지는 만큼 cnt에 더한다. N, K = map(int, input().split()) money = [] for i in range(N): temp = int(input()) money.append(temp) #..

[파이썬] 백준 1436 영화감독 숌 (부르트포스)

https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net n이 10000이하이기 때문에 처음에는 0부터 1씩 증가하면서 비교할까 생각했지만 생각해보니 첫 값인 666부터 1씩 더하면 되겠다는 생각이 들어서 수정했다. 6이 세번 연속 들어갔는지 확인해줘야하기 때문에, 비교할때는 666을 숫자가 아닌 문자형으로 바꿔서 풀었다. n = int(input()) start = 666 order = 0 while True: if '666' in str(start..

[파이썬] SWEA SW 문제해결 응용 7일차 - 행렬찾기

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV18LoAqItcCFAZN SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 일단 이건 예제에 있는 테케이다... 1 9 1 1 3 2 0 0 0 0 0 3 2 5 2 0 0 0 0 0 2 3 3 1 0 0 0 0 0 0 0 0 0 4 5 5 3 1 1 2 5 0 3 6 4 2 1 2 3 6 0 2 1 1 4 2 0 0 0 0 4 2 3 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 일단 주어진 array를 2중 for문을 돌면서 탐색하고, 행렬이 ..

재귀 심화: 조합과 중복조합

path 배열안에 문자를 비교하면서 조합을 출력하는 방법 (참고용… 쓰지말기) arr=['a','b','c','d'] path=['']*3 def abc(level): if level==3: for i in range(3): print(path[i],end='') print() return for i in range(4): #1 path[level-1] -> 그전 단계에서 타고 들어온 곳 #2 arr[i] -> 앞으로 들어갈 가지 #3 그전 들어온 가지 0 and path[level-1] >= arr[i]: continue path[level]=arr[i] abc(level+1) abc(0) for문의 i값의 변화를 이용한 조합 출력하기 A B C A ..

재귀로 순열 풀어보기

4개 카드 중 3개 뽑기 (순서 O) n=int(input()) path=['']*n # 최대 레벨 까지 size 맞추면 오케이 dice=[1,2,3,4] used=[0]*6 # br의 개수 만큼 만들기 def abc(level): if level==n: for i in range(level): print(path[i],end=' ') print() return for i in range(6): #if used[i]==0: if used[i] == 1: continue path[level]=dice[i] used[i] =1 abc(level+1) used[i] = 0 #path[level]=0 abc(0) 요소 • ABCD 중에 C로 시작하는 경우는 다 제외하고 출력하기 candidates = ['A',..