[python] counter
·
코딩테스트/코딩테스트를 위한 정리
Counter:Counter는 most_common() 메서드를 통해 가장 자주 등장하는 요소를 쉽게 찾을 수 있습니다.elements() 메서드를 사용하여 카운트된 요소를 반복적으로 가져올 수 있습니다.subtract() 메서드를 사용하여 다른 Counter 객체나 iterable의 카운트를 감소시킬 수 있습니다.딕셔너리 (dict):딕셔너리에는 기본적인 삽입, 삭제, 검색 기능만 있으며, 카운트를 세는 것과 관련된 특수한 메서드는 없습니다.사용자가 필요에 따라 키의 값을 수동으로 증가시키거나 감소시켜야 합니다. from collections import Counterelements = ['a', 'b', 'a', 'c', 'b', 'a']counter = Counter(elements)print(co..
[프로그래머스] 132265: 롤케이크 자르기 | 집합(set),counter
·
코딩테스트/프로그래머스
[프로그래머스] 132265: 롤케이크 자르기https://school.programmers.co.kr/learn/courses/30/lessons/132265 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [python] 문제풀이1. 초기설정철수가 처음에 모든 토핑을 가지고 시작 ->  cheolsu 딕셔너리에 모든 토핑을 종류별로 수량을 저장동생의 토핑을 기록할 bro 딕셔너리를 빈 상태로 시작topping 리스트를 deque로 변환하여 맨 앞에서부터 토핑을 하나씩 철수에게서 동생에게 넘김2. 토핑 이동topping에서 하나씩 popleft를 하면서 cheolsu 에서 해당 토핑수 줄임.만약 토핑 ..
[프로그래머스]67258 : 보석 쇼핑 | 투포인트 탐색
·
코딩테스트/프로그래머스
[프로그래머스] 67258 : 보석 쇼핑https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [python] 문제 풀이 모든 보석 종류를 최소한 하나씩 포함하는 구간을 찾아야 함투 포인터를 활용해 구간을 효율적으로 줄여나감딕셔너리를 사용해 현재 구간에 포함된 보석의 개수를 관리 while end while end if gems[end] in gem_count: 현재 end 포인터가 가리키는 보석이 gem_count에 이미 있는지 확인있으면: 그 보석의 개수 +1ex) 현재 gem_count에 DI..
[프로그래머스]150368: 이모티콘 할인 행사 | DFS
·
코딩테스트/프로그래머스
[프로그래머스]150368: 이모티콘 할인 행사- DFS   [python] 문제풀이1 . DFS 사용하여 할인율 조합 생성combo는 현재까지 선택된 이모티콘의 할인율 조합.예를 들어, 첫 번째 이모티콘에 10% 할인을 선택했다면 combo에 [10]이 저장되고, 두 번째 이모티콘에 20% 할인을 선택했다면 combo가 [10, 20]으로 확장 2. 할입율 조합에 대한 구매 or 플러스 가입 계산구매액 > 기준액 인 경우, 플러스 가입 (sub_count) 에 1을 더해줌아닐 경, 구매액 (sales)에 1을 더해줌 2. 최대 가입자, 최대 판매 이익sub_count > max_sub 현재 조합에서 서비스 가입자 수(sub_count)가 이전에 기록된 최대 가입자 수(max_sub)보다 많으면, 현재 ..
[프로그래머스]43165: 타겟 넘버 | DFS
·
코딩테스트/프로그래머스
[프로그래머스]43165번 타겟 넘버 - DFS https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  [python]문제 풀이DFS + 재귀함 1. 배열 numbers와 목표 값 target을 인자로 받기 , 여기서 주어진 숫자들을 더하거나 빼서 target 값을 만들 수 있는 방법을 찾는 것!!! 2. idx와 현재까지의 합(result)을 매개변수로 받고 , idx위치의 숫자를 더하거나 빼는 방법을 둘다 탐색  3. idx == len(number..
[연습문제][python]최대공약수
·
코딩테스트/기타 문제
주어진 N개의 수에서 차이를 구하고, 그 차이들의 최대 공약수를 구하기M의 후보군 : 차이의 최대 공약수의 약수1. 차이들의 최대 공약수(GCD)를 구하는 이유N개의 수에서 나머지가 모두 동일하게 되는 M을 찾으려면 다음과 같음.예를 들어, 두 수가 있다고 가정A = 25B = 10이 두 수를 M으로 나눴을 때 나머지가 같다면, 다음과 같은 조건이 성립해야 함. 25 % M == 10 % M이 식을 전개하면, 두 수의 차이가 M으로 나누어 떨어지는 수여야 함(25 - 10) % M == 0, 즉 15 % M == 0이 조건을 N개의 모든 수들에 대해 적용하기 위해, N개의 수들 간의 차이를 구하고, 그 차이들의 **최대 공약수(GCD)**를 구함. 2. 최대 공약수(GCD) 구하기최대 공약수는 두 수를 ..
[연습문제][python]덱-중급
·
코딩테스트/기타 문제
문제1부터 N까지 수가 쓰여져 있는 N장의 카드 더미가 주어집니다. 이 카드 더미에서 맨 위 또는 맨 아래에 있는 카드를 내려놓는 것을 반복해서, 1부터 N까지 차례대로 내려놓을 수 있는지 알려주는 프로그램을 작성해 주세요.#입력51 4 3 5 2#출력NO #입력 51 4 5 3 2#출력YES 카드 더미에서 맨 위 또는 맨 아래에 있는 카드를 내려놓는 것을 반복해서, 1이 쓰여있는 카드부터 N이 쓰여 있는 카드까지 차례대로 내려놓을 수 있으면 YES, 그렇지 않으면 NO를 출력 [python]문제풀이 1부터 N까지 순서대로 놓아야한다. ex) N=5 일때, 카드 더미가 1,2,3,4,5 로 나열될 수 있는지. 맨 앞과 맨뒤가 1인지 체크-> 맞으면 카드 더미 맨 앞 카드 삭제-> 맨 앞과 맨뒤 카드가 2..
For loop
·
코딩테스트/코딩테스트를 위한 정리
인덱스를 사용하지 않고 리스트의 요소를 직접 사용하는 방법을 설명할게요. 기본적으로 파이썬의 for 루프는 리스트의 각 요소를 직접 반복할 수 있게 해줍니다.인덱스를 사용하는 경우# 인덱스를 사용한 예answer = ['a', 'b', 'c', 'd']for i in range(len(answer)): print(answer[i]) # 인덱스를 사용하여 각 요소에 접근여기서는 range(len(answer))를 사용하여 인덱스를 생성한 후, answer[i]를 통해 각 요소에 접근합니다.인덱스를 사용하지 않는 경우# 인덱스를 사용하지 않은 예answer = ['a', 'b', 'c', 'd']for letter in answer: print(letter) # 각 요소를 직접 사용여기서는 f..
[프로그래머스] 1154539 : Lv2 뒤에 있는 큰 수 찾기| 스택
·
코딩테스트/프로그래머스
[프로그래머스] 1154539 : Lv2 뒤에 있는 큰 수 찾기https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr[python] 문제 풀이배열의 수 만큼 루프를 돌려서 직접 원소들의 크기를 비교하는 코드를 짬. 1. results 리스트를 생성해서 모든 값을 -1 로 초기화. 각 요소는 숫자에 대한 결과 값을 저장하게 됨. (큰 수가 없으면 -1로 남게 함) 2. 마지막 요소를 제외하고 numbers에 있는 모든 요소들의 크기를 비교해야함.3. 현재..
[백준][python] 28278 스택2 |스택
·
코딩테스트/백준
[백준] 28278 스택2 |스택[python] 문제 풀이import sysinput = sys.stdin.readline #입력을 빠르게 처리할 수 있음#input()보다 속도가 빠름. 반복적으로 많은 입력 받기 가능n = int(input()) #명령 개수 n 입력 #n번 만큼 명령 반복stack = [] #스택 초기화for _ in range(n): cmd = list(map(int,input().split())) #한줄에 입력된 명령을 정수로 변환 후 리스트에 저장 #명령의 첫번째 값 cmd[0] if cmd[0]==1: stack.append(cmd[1]) #스택에 넣기 elif cmd[0]==2: #두번째 명령 if stack: #스..