일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- IPv4 주소체계
- l-value참조자
- 문자형 배열
- 백준 파이썬
- C언어 스택 연산
- 입출력 관리자
- 회전 및 자리 이동 연산
- c언어 괄호검사
- 유형 변환
- 운영체제 기능
- getline()함수
- 프로그래머스 푸드 파이트 대회
- auto 키워드
- 원형 연결 구조 연결된 큐
- 괄호 검사 프로그램
- 범위 기반 for문
- 문제해결 단계
- const화
- C언어 덱
- C언어 계산기 프로그램
- 주기억장치
- const l-value참조자
- 논리 연산
- 프로그래머스 배열만들기4
- 네트워크 결합
- 알고리즘 조건
- 값/참조/주소에 의한 전달
- LAN의 분류
- r-value참조자
- string유형
- Today
- Total
목록프로그래머스/LV2 (89)
chyam

def solution(n,a,b): cnt=1 #1번은 고정으로 대결하는것 while(1): if(a//2+a%2!=b//2+b%2): # 싸움번호가 같지 않을때 a=a//2+a%2 # 1번 2번은 1이나오고, 3번 4번은 2가 나와야함. b=b//2+b%2 # 그래서 각각 2를 나눈 몫과 나머지를 더해줌 cnt+=1 else: return cnt처음 성공한 풀이는 위이고, 아래는 조금 더 간편하게 표현한 풀이이다.def solution(n,a,b): cnt=1 while(1): if((a+1)//2!=(b+1)//2): a=(a+1)//2 #..

def combi(m,n): if n==0 or m==n: return 1 else: #조합을 재귀로 표현 return combi(m-1,n-1)*m//ndef solution(n): cnt=0 ma=n while(n>=0): cnt+=combi(ma,n) # n을 1로 다 두고 1을 2개씩 묶어서 그때마다 경우의수를 구함 ma-=1 n-=2 return cnt%1234567 # 1 1 1 1 => 4C4 (1개)# 1 1 2 => 3C2 (3개)# 2 2 => 2C0 (1개)처음 풀이(위에)는 테스트케이스 5개정도 런타임에러걸려서 통과를 못했었다.아래 풀이는 재귀말고 반복문으로 구하였다.def com..

def solution(k, tan): dic={} tan_set=set(tan) #집합으로 저장하기 li=[] # 딕셔너리의 값을 저장할곳 cnt=0 #개수 저장 for a in tan_set: #딕셔너리에 값 추가 dic[a]=0 for a in tan: #개수 추가 dic[a]+=1 for key,value in dic.items(): li.append(value) # 개수를 리스트로 저장 li.sort(reverse=True) # 내림차순 while(k>0): k-=li[cnt] cnt+=1 return cntcounter을 사용하지않고 구현했음. 아래는 counter을 사용한 ..

def check(people,limit,cnt): while(1): if len(people)!=0: if people[0]+people[-1]1: #길이가 2넘고 앞과 뒤를 더한게 limit보다 적으면 없애기 people.pop() people.pop(0) cnt+=1 else: people.pop() cnt+=1 else: break return cntdef solution(people, limit): cnt = 0 people.sort() cnt=check..

def el(a,n): if (a+1)%n==0: p=n else: p=(a+1)%n return [p,(a//n)+1]def solution(n, words): li=[words[0]] for a in range(1,len(words)): if words[a] not in li: #중복이 없으면 if li[-1][-1]==words[a][0]: #전 단어 끝문자와 현재 단어 첫문자가 같을때 li.append(words[a]) #추가 else: #다르면 return el(a,n); #그 위치 반환 else: #중복 있으면 그 위치 반환..

def solution(arr): an=1 li=[[1] for a in range(len(arr))] #소인수 분해를 저장할 리스트. 1은 모든수에 들어가서 미리 저장 idx=0 # 리스트의 인덱스 for a in arr: b=2 #2부터 나눠주기 while(b처음에 최대공약수랑 최소공배수 구하는거 잘몰라서 복잡하게 풀었다..def lcm(a,b): #최소 공배수. return a*b//gcd(a,b)def gcd(a,b): #최대 공약수.유클리드 호제법 사용 if a%b==0: return b return gcd(b,a%b)def solution(arr): answer=arr[0] for num in arr[1:]..

def solution(s): li=[] li.append(s[0]) #처음 문자열은 미리 추가해두기 for a in range(1,len(s)): if len(li)!=0: #li가 비어있지 않을때 if li[-1]==s[a]: #마지막과 같은 문자일때 스택에서 꺼내기 li.pop() else: #아니면 문자 추가 li.append(s[a]) else: li.append(s[a]) if len(li)!=0: return 0 return 1스택을 사용하여 마지막과 계속 비교해 제거해준다.

def solution(s): cntz=0 #0의 개수 cnt=0 #반복 횟수 while(s!="1"): cnto=0 #1의 개수 for a in s: if a!="0": cnto+=1 else: cntz+=1 s="" #문자열 초기화 while(cnto>0): #새로운 2진수 저장 s+=str(cnto%2) cnto//=2 cnt+=1 return [cnt,cntz]bin과 count를 사용하지 않고 구했었다. count를 사용하면 더 간단하게 바꿀수있다.def solution(s): ..