class 2

n=int(input())
for _ in range(n):
    sum=0
    br=list(input())
    for i in br:
        if i=='(': sum += 1
        elif i==')' : sum -=1
        if sum<0:
            print("NO")
            break
    if sum>0 : print("NO")
    elif sum==0 : print("YES")

<코드 설명>
입력 받을 개수인 n을 먼저 입력받는다.
n번 for문을 반복해준다. 이 안에서 br라는 list를 입력받고, for문을 이용해 br의 문자 하나하나씩 검사하기로 하였다. (이면 sum에 1을 더해주었고, )이면 sum을 1 빼주어 만약 이미 0보다 작으면 괄호가 맞지 않으므로 NO를 출력한 후 break를 해주었다. sum이 0보다 클 경우, 이 또한 맞지 않는 경우이므로 NO를 출력해주었고, 0일 때에만 YES를 출력하도록 하였다.

<실행 결과>

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

[BOJ] 1251 단어 나누기  (0) 2022.05.28
[BOJ] 4949 균형잡힌 세상  (0) 2022.05.28
[BOJ] 1094 막대기  (0) 2022.05.22
[BOJ] 10814 나이순 정렬  (0) 2022.05.22
[BOJ] 1920 수 찾기  (0) 2022.05.22

n=int(input())
stick=64
cnt=0
while n>0:
    if stick>n:
        stick//=2
    else:
        cnt+=1
        n-=stick
print(cnt)

<코드 설명>

먼저 막대 길이 n을 입력 받아주었다. 최장 길이인 64를 stick 변수에 저장해주었다.

stick이 n보다 크면 stick을 절반으로 줄인다. 그렇지 않으면 cnt를 1 늘려주고, n에서 stick만큼의 길이를 빼준다.

이렇게 구한 cnt값을 출력해준다.

 

<실행 결과>

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

[BOJ] 4949 균형잡힌 세상  (0) 2022.05.28
[BOJ] 9012 괄호  (0) 2022.05.28
[BOJ] 10814 나이순 정렬  (0) 2022.05.22
[BOJ] 1920 수 찾기  (0) 2022.05.22
[BOJ] 1850 최대공약수  (0) 2022.05.15

class 2

n=int(input())
mem=[]
for i in range(n):
    age, name=map(str, input().split())
    age=int(age)
    mem.append((age,name))

mem.sort(key=lambda x : x[0])

for i in mem:
    print(i[0],i[1])

<코드 설명>

  n을 입력 받아주, n만큼 for문을 반복하여 age와 name을 입력받도록 했다. 일단 str로 입력을 받은 후, age는 int로 변경해주었다. 그리고 이 age와 name을 mem이라는 list에 append 시켜주었다.

  mem에 모두 추가가 되었으므로 이를 sort시켜준다. key=lambda x : x[0]은 age만 가지고 비교하도록 하기 위해 사용하였다.

  for문을 통해 정렬된 mem list를 print해주었다.

 

<실행 결과>

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

[BOJ] 9012 괄호  (0) 2022.05.28
[BOJ] 1094 막대기  (0) 2022.05.22
[BOJ] 1920 수 찾기  (0) 2022.05.22
[BOJ] 1850 최대공약수  (0) 2022.05.15
[BOJ] 2751 수 정렬하기2  (0) 2022.05.15

class 2

from sys import stdin, stdout
n = stdin.readline()
N = set(stdin.readline().split())
m = stdin.readline()
M = stdin.readline().split()

for l in M:
    if l in N:
        print(1)
    else:
        print(0)

<코드 설명>

  자료구조 시간에 배운 이진 탐색 방법을 활용하려 했는데 시간이 오래걸릴 것 같아 구글링하던 중, 새로운 방법을 발견하였다.

  먼저, input으로 인한 시간초과가 발생하지 않도록 stdin.readline()을 사용해주었다. n은 정수의 개수, N은 배열의 index로 입력받아주었다. 이를 set으로 묶으면 더욱 효율적인 코드가 된다고 한다. 이는 중복을 허용하지 않으며, 순서가 없기 때문이다. 또, m을 변수로 설정하여 정수 개수를 입력 받고, M으로 list를 만들어준다.

  for문으로 M list 속 수들을 l에 넣어주는데 만약 l이 N에 속해 있다면 1을 출력하고, 그렇지 않으면 0을 출력하도록 하였다.

 

<실행 결과>

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

[BOJ] 1094 막대기  (0) 2022.05.22
[BOJ] 10814 나이순 정렬  (0) 2022.05.22
[BOJ] 1850 최대공약수  (0) 2022.05.15
[BOJ] 2751 수 정렬하기2  (0) 2022.05.15
[BOJ] 7568 덩치  (0) 2022.05.15

+ Recent posts