For Programmer

1.그리디 알고리즘(탐욕법) - (2) 문제3,문제4 본문

코팅테스트/코딩테스트 이론 정리

1.그리디 알고리즘(탐욕법) - (2) 문제3,문제4

유지광이 2021. 8. 11. 13:39
728x90

문제3

정답코드

data = input() # 문자열데이터입력

result = int(data[0]) # 첫 번째 문자를 인트형으로 대입

for i in range(1,len(data)): 
    #두수중 하나라도 0혹은 1인 경우 곱하기보다는 더하기 수행
    num = int(data[i])
    if num <= 1 or result <= 1:
        result += num
    else:
        result *= num
print(result)

나의 코드

data = input() # 문자열데이터입력

result = int(data[0]) # 첫 번째 문자를 인트형으로 대입

for i in range(1,len(data)): 
    #두수모두 1보다 클 경우 곱하기수행
    if int(data[i]) > 1 and int(data[i-1]) > 1:
        # int(data[i]) <= 1 or int(data[i=1] <= 0)
        result *= int(data[i])
    else:
        result += int(data[i])
print(result)

 

문제4

정답 코드

N = int(input())
data = list(map(int,input().split()))
data.sort() #오름차순 정렬(제일중요)

result = 0 #총 그룹의 수
count = 0 #현재 그룹에 포함된 모험가의 수

for i in data: #공포도를 낮은 것 부터 하나씩 확인하며
    count += 1 #현재 그룹에 해당 모험가를 포함시키기(현재 그룹의 사람 수)
    if count >= i: # 현재 그룹에 포함된 모험가의 수가 현재의 공포도 이상이라면, 그룹 결성
        result +=1 #총 그룹의 수 증가
        count = 0 #현재 그룹에 포함된 모험가의 수 초기화

print(result)

나만의 코드

n = int(input())
data = list(map(int,input().split()))
data.sort() #오름 차순 정리

count = 0 #현재 그룹의 사람수
result =0 #총 그룹의 수

for i in range(data.__len__()): # for i in data 도 가능
    count += 1 #현재 그룹에 사람수 한명 추가
    if count == data[i]: # 만약 현재 사람수가 공포심하고 같다면
        result += 1 # 총그룹의 수에 추가시키고
        count = 0 #현재 그룹의 수는 초기화
print(result)
728x90
Comments