본문 바로가기

🔅코딩테스트 공부🔅213

[프로그래머스] Level1 폰켓몬(with python) https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 내가 작성한 코드 def solution(nums): poket = set(nums) if len(poket) < len(nums)//2: return len(poket) else: return len(nums)//2 조건1) 같은 종류 = 같은 번호 조건2) N/2 만큼을 뽑을 것이고, 최대한 많은 종류를 뽑아야 함 조건3) num2의 길이는 항상 짝수로 주어짐 1. set을 이용해서 num.. 2023. 1. 29.
#1 문자열 뒤집는 방법(문자열 슬라이싱, reverse) 1. 문자열 슬라이싱 [start : end : step] #start 부터 end-1 까지 step만큼건너뛰면서 아래 예시의 example 변수에는 "abcde"가 대입되어있음 [::-1] 역순으로 한 개씩 출력 ex) example[::-1] #"edcba" 역순으로 문자열 출력 ex) example[2:0:-1] #"cb" 2. reverse() 함수 이용하기 reverse 는 list 타입에서 제공되는 함수이며, 값을 반환하지 않고 해당 list()를 뒤집는다. 당연히, list타입만 이용가능하다. (str, tuple x) example = ["a","b","c"] example2 = example.reverse() print(example2) #None print(example) #['c', .. 2023. 1. 28.
[백준] 9093번 단어 뒤집기(with python) https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net 1. 내가 작성한 코드 n = int(input()) arr = [] for i in range(n): word = input().split() for i in word: i = list(i) n = len(i) for j in range(n//2): i[j],i[n-1-j] = i[n-1-j],i[j] print(''.join(i),end=' ') 단어의 제일 첫 스펠링과 마지막 스펠링의.. 2023. 1. 28.
[백준] 10610번 30(with python) https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 1. 내가 작성한 코드 from itertools import permutations import sys n = sys.stdin.readline() #처음에 주어지는 수 arr = [] for j in permutations(n,len(n)): #순열로 모든 수 append j = list(j) #순열은 튜플 형식이기 때문에 list로 바꿔주기 k = 1 while k>0: result = 0 f.. 2023. 1. 27.
[백준] 2875번 대회or인턴(with python) https://www.acmicpc.net/problem/2875 2875번: 대회 or 인턴 첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N), www.acmicpc.net 1. 내가 작성한 코드 n, m, k = map(int, input().split()) cnt = 0 while n+m-k >= 0: if n >= 2 and m >= 1 and (n-2)+(m-1) >= k: cnt+=1 n-=2 m-=1 else: print(cnt) break else: print(cnt) n + m - k > 0 일때라는 조건을 하나 더 입력을 했는데, 사실 아래 조건을 만족한다면 n + m - k > 0 조건도 자연스럽게 맞춰지기 때문에 굳.. 2023. 1. 27.
[알고리즘] 그리디 + 문제풀이 그리디 알고리즘( = 탐욕 알고리즘) 현재 상황에서 제일 좋아보이는 값을 선택하여 결과를 도출 지역적으로는 최적이지만 전체적으로 최적의 해가 아닐 수 있음 계산 속도가 매우 빠름 정당성 판별 현재 선택이 다음 선택에 여향을 주지 말아야 함 매 순간의 최적의 해가 문제 전체에 대한 최적의 해여야 함 번호 문제 이름 Level 정답 여부 백준 2839 설탕 배달 실버4 X 20230126 백준 11399 동전 0 실버4 O 20230126 백준 2875 대회 or 인턴 브론즈3 O 20230127 백준 1946번 신입사원 실버1 O 20230210 백준 11399번 ATM 실버4 O 20230211 2023. 1. 27.
[백준] 2839번 설탕 배달(with python) https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 1. 정답 코드 n = int(input()) cnt = 0 while n >= 0: if n % 5 == 0: #5로 나누어 떨어질경우 cnt += (n//5) print(cnt) break n -= 3 #5로 나누어 떨어지지 않으면 3을 반복해서 빼준다 cnt += 1 else: #5와 3 둘 다 나누어 떨어지지 않을 경우 -1 출력 print(-1) 한 시간 정도 고민을 하다가 도저히,, 안되겠어서,,.. 2023. 1. 27.
[백준] 1920번 수 찾기(with python) https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 1. 내가 작성한 코드 n = int(input()) arr = set(map(int,input().split())) m = int(input()) arr1 = list(map(int, input().split())) for i in arr1: if i in arr: print(1) else: print(0) 처음에 arr를 list가 아닌 set으.. 2023. 1. 26.
[백준] 25501번 재귀의 귀재(with python) https://www.acmicpc.net/problem/25501 25501번: 재귀의 귀재 각 테스트케이스마다, isPalindrome 함수의 반환값과 recursion 함수의 호출 횟수를 한 줄에 공백으로 구분하여 출력한다. www.acmicpc.net 1. 내가 작성한 코드 def recursion(s, l, r): global cnt cnt += 1 if l >= r: return 1 elif s[l] != s[r]: return 0 else: return recursion(s, l+1, r-1) def isPalindrome(s): return recursion(s, 0, len(s)-1) n = int(input()) for i in range(n): word = input() cnt = 0.. 2023. 1. 25.