[프로그래머스_python] 위장 || 42578
·
🎯PS
programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장programmers.co.kr하 이 문제는 조합으로 푸는 문제라고 생각해서 해시까지는 구현해주었는데,,, 경우의 수를 이제 어떻게 구해주지?에서 막혔었다.....ㅠㅜ 옷의 종류가 a와 b가 있고 각각 2벌씩 있다면, 스파이가 입을 수 있는 옷의 경우의 수는 2 x 2 = 4가지 그러나, 스파이는 1개의 옷만 입는 경우가 있으므로, +1을 해주어 3x3 = 9가지 이 경우에는 아무것도 걸치지 않는 경우가 포함되어있으므로 -1을 해준다. def solution(clothes): a = {} for i in range(len(clothes)): if clothes[i][1] in a: a[cloth..
[프로그래머스_python] 전화번호 목록 || 42577
·
🎯PS
programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조programmers.co.kr진짜로............해시를 어떻게 이용해주어야 하는 건지,,,,,, 접두사만 어떻게 비교해주어야 하는건지......... ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ여러번 시도를 해주었었다. 결국에는 해시를 이용해주지 않고 문제를 풀어주었었는데, 접두사만 비교할 수 있는 함수가 따로 있었던 게 기억이 났다.. 시도를 안해주었었지만,, 오늘 해주었다! def solution(pb): #?실패한..
[백준_python] 동전 0 || 11047 (그리디 알고리즘)
·
🎯PS
11047번: 동전 0 (acmicpc.net) 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그리디 알고리즘(Greedy): 가장 최선의 선택을 하는 기법 처음에 최선의 선택을 한 것이 최후에도 가장 최선의 선택이길 바라는 알고리즘 따라서, 모든 경우에서 그리디 알고리즘이 통하는 것이 아니다.#동전 0 n, k = map(int, input().split(' ')) coin = [] for i in range(n): coin.append(int(in..
[백준_python] 국영수 || 10825
·
🎯PS
10825번: 국영수 (acmicpc.net) 10825번: 국영수첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1www.acmicpc.net#국영수 n = int(input()) arr = [] for i in range(n): a, b, c, d = input().split() arr.append((a, int(b), int(c), int(d))) arr.sort(key = lambda x : (-x[1], x[2], -x[3], x[0])) #-는 내림차순 for i in arr: print(i[0])
[백준_python] 다리 놓기 || 1010
·
🎯PS
1010번: 다리 놓기 (acmicpc.net) 1010번: 다리 놓기입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다.www.acmicpc.net원래 조합의 개수를 구할 때에는#조합의 개수 from itertools import combinations arr = [i for i in range(a)] result = list(combinations(arr, b)) print(len(result))이런식으로 모든 경우를 구하고 len으로 개수를 구해주겠지만, 더 간단하게 math모듈에 있는 comb()를 이용해주면 조합의 경우의 수를 구해줄 수 있다. 기억기억하기..
[백준_python] 그룹 단어 체커 || 1316
·
🎯PS
www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때www.acmicpc.net#그룹 단어 체커 n = int(input()) cnt = 0 for _ in range(n): s = list(input()) arr = [] no = 0 for i in range(len(s)): if s[i] in arr: if s[i-1] != s[i]: no += 1 break else: arr.append(s[i]) if no ==0: cnt += 1 print(cnt)기존..
[백준_python] 크로아티아 알파벳 || 2941
·
🎯PS
www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net아 기억난다 진짜 반례 엄청 찾아보면서 계속 값을 넣어봤었다. 정답이 잘 나오는 것 같아 보이지만, 다른 예시를 찾아다가 넣으면 값이 달라서 자꾸 헤맸었던 문제다.#크로아티아 알파벳 s = input() arr = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="] #길이가 3개인 것도 있는 것에 주의하기 cnt = 0 n = 0 m = 3..
[백준_python] 한수 || 1065
·
🎯PS
www.acmicpc.net/problem/1065 1065번: 한수어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net#한수 n = int(input()) cnt = 0 if n
[백준_python] 요세푸스 문제 0 || 11866
·
🎯PS
www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)www.acmicpc.net하.. 해주면서 안되면 조건 추가하고 조건 추가하고,,, 이렇게 해도 되는건가 싶은 그런 느낌이였다 ㅎㅎ.. for i in range(k): cnt += 1 if cnt == len(people): cnt = 0cnt(인덱스)를 k만큼 이동을 해주다가 list 인덱스를 벗어나게 되면, 맨 처음 인덱스로 가도록 하였다.cnt -= 1 if cnt < 0: cnt = len(people)-1 result.append(people[cnt]) people.pop(cnt)일단, list의 인덱스가 0부터 시..
[백준_python] 좌표 정렬하기 || 11650
·
🎯PS
www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.www.acmicpc.net# 좌표 정렬하기 n = int(input()) result = [] for _ in range(n): x, y = map(int, input().split(' ')) result.append((x, y)) result.sort(key=lambda x: (x[0], x[1])) for i in result: print(i[0], i[1])