n=int(input())
num=list(map(int, input().split()))
sum=[num[0]]
for i in range(len(num)-1):
    sum.append(max(sum[i]+num[i+1],num[i+1]))
print(max(sum))

<코드설명>

입력받을 정수의 개수를 n으로 입력받아주었다. 그리고 num에 list형식으로 수열을 입력받아주었다.

num의 수열을 for문을 통해 돌면서, sum[i]+num[i+1]이 더 큰 지, 아니면 num[i+1]이 더 큰 지를 비교해주고 더 큰 수를 sum에 append 해주었다. 여기서 sum의 첫번째값을 num의 첫번째 원소인 num[0]을 주었는데, 만약 0을 주면 음수만으로 이루어진 수열에서도 0이 최소값이 되어버리며, 입력받을 수의 최소값인 -1000을 주게된다면 가장 첫번째 원소만 더해주었을 때가 최소값일 때를 고려하지 못한다.

이렇게 구한 sum 중에서 가장 큰 원소값을 출력해주었다.

 

 

<실행결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 2910 빈도 정렬  (0) 2022.10.02
[BOJ] 25325 학생 인기도 측정  (0) 2022.10.02
[BOJ] 3986 좋은 단어  (0) 2022.09.25
[BOJ] 22233 가희와 키워드  (0) 2022.09.24
[BOJ] 1475 방 번호  (0) 2022.09.18

n=int(input())
cnt=0
for _ in range(n):
    word=input()
    arr=[]
    for i in word:
        if i not in arr:
            arr.append(i)
        else:
            if i == arr[-1]:
                arr.pop()
            else:
                arr.append(i)
    if not arr:
        cnt += 1
print(cnt)

<코드설명>

단어의 수인 n을 먼저 입력받아 주었다. 그리고 n만큼 for문으로 반복시켜 word를 input 받아주었다.

word의 문자를 하나씩 살펴보고, arr에 문자인 i가 없다면 arr에 append하여 추가시켜주었다.

그렇지 않은 경우, i가 arr의 마지막 원소가 같으면 arr를 pop하여 삭제시켜주었다. i가 arr[-1]과 다르면 arr에 i를 append 해주었다.

이렇게 계속해서 pop이 되어 arr에 원소가 남지 않았다면 cnt값을 1 증가시켜주도록 하였다.

좋은 단어의 개수를 출력하기 위해 cnt값을 출력해주었다.

 

 

<실행결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 25325 학생 인기도 측정  (0) 2022.10.02
[BOJ] 1912 연속합  (0) 2022.09.25
[BOJ] 22233 가희와 키워드  (0) 2022.09.24
[BOJ] 1475 방 번호  (0) 2022.09.18
[BOJ] 4358 생태학  (0) 2022.09.18

import sys

n, m=map(int, sys.stdin.readline().split())
dic=dict()
for _ in range(n):
    dic[sys.stdin.readline().rstrip()]=1

for _ in range(m):
    wm = sys.stdin.readline().rstrip().split(',')
    for word in wm :
        if word in dic.keys() :
            if dic[word] == 1 :
                dic[word] -= 1
                n -= 1
    print(n)

<코드설명>

키워드 개수인 n과 블로그에 쓴 글의 개수인 m을 먼저 입력받았다. 키워드를 입력받기 위해 n만큼 for문을 반복시켜주었고, dict에 키워드들을 입력받아 저장해주었다. 그리고 1을 해당 key 값에 저장해주었다. 

글에 사용된 키워드를 입력받기 위해 m만큼 for문을 반복시켜주었고, 쉼표로 구분해주기 때문에 split(',')을 추가하여 wm에 입력을 받아주었다.

wm의 word가 dic.keys()에 있으면서 dic[word]의 값이 1이라면 1을 감소시켜주고 키워드 개수인 n도 1씩 감소하도록 하였다.

최종적으로 남는 키워드의 개수인 n을 출력해주었다.

 

 

<실행결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 1912 연속합  (0) 2022.09.25
[BOJ] 3986 좋은 단어  (0) 2022.09.25
[BOJ] 1475 방 번호  (0) 2022.09.18
[BOJ] 4358 생태학  (0) 2022.09.18
[BOJ] 20291 파일 정리  (0) 2022.09.17

num=input()
arr=[0]*10

for i in num:
    if(i=='6' or i=='9'):
        if arr[6]<=arr[9]:
            arr[6]+=1
        else:
            arr[9]+=1
    else:
        arr[int(i)]+=1
print(max(arr))

<코드설명>

방 번호인 num의 입력을 받아주었다. 그리고 플라스틱 숫자 세트 0-9번을 모두 사용하고자 arr를 만들어주었다.num의 숫자가 6 혹은 9가 아닐 때, arr[i]의 값을 1 증가시켜주었다.

 

문제에서 6과 9는 서로 바꿔 사용할 수 있다고 한다.num의 숫자가 6 혹은 9일 때, 그리고 arr[6]이 arr[9]의 값보다 작거나 같을 때 arr[6]을 1 증가시켜주었고, 그렇지 않으면 arr[9]을 1 증가시켜주었다

 

그리고 arr중 가장 큰 값을 출력시켜 필요한 세트 개수를 출력해주었다.

 

<실행결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 3986 좋은 단어  (0) 2022.09.25
[BOJ] 22233 가희와 키워드  (0) 2022.09.24
[BOJ] 4358 생태학  (0) 2022.09.18
[BOJ] 20291 파일 정리  (0) 2022.09.17
[BOJ] 1302 베스트셀러  (0) 2022.09.11

+ Recent posts