728x90

백준 10172 개

public class Main {
    
    public static void main(String[] args) {
        System.out.println("|\\_/|");
        System.out.println("|q p|   /}");
        System.out.println("( 0 )\"\"\"\\");
        System.out.println("|\"^\"`    |");
        System.out.println("||_/=\\\\__|");
    }
}

 

728x90

'Algorithm > Java 풀이' 카테고리의 다른 글

백준 1001 자바  (0) 2022.03.11
백준 1000 자바  (0) 2022.03.11
백준 10171 자바  (0) 2022.03.11
백준 10718 자바  (0) 2022.03.11
백준 2557 자바  (0) 2022.03.11
728x90

백준 10171 고양이

public class Main {
    
    public static void main(String[] args) {
        System.out.println("\\    /\\");
        System.out.println(" )  ( ')");
        System.out.println("(  /  )");
        System.out.println(" \\(__)|");
    }
}
728x90

'Algorithm > Java 풀이' 카테고리의 다른 글

백준 1001 자바  (0) 2022.03.11
백준 1000 자바  (0) 2022.03.11
백준 10172 자바  (0) 2022.03.11
백준 10718 자바  (0) 2022.03.11
백준 2557 자바  (0) 2022.03.11
728x90

백준 10718 We love kriii

public class Main {

    public static void main(String[] args) {
        System.out.println("강한친구 대한육군");
        System.out.println("강한친구 대한육군");
    }

}

 

728x90

'Algorithm > Java 풀이' 카테고리의 다른 글

백준 1001 자바  (0) 2022.03.11
백준 1000 자바  (0) 2022.03.11
백준 10172 자바  (0) 2022.03.11
백준 10171 자바  (0) 2022.03.11
백준 2557 자바  (0) 2022.03.11
728x90

백준 2557 Hello World

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello World!") ;

    }

}

자바는 파이썬과 다르게 선언해줄게 너무 많아서 어렵고, 귀찮은 언어 같다.
그리고 파이썬과 달리 백준에 답을 제출할 때
class 이름을 Main으로 설정하고 제출해야 한다.
아니면 런타임 에러가 발생한다.

728x90

'Algorithm > Java 풀이' 카테고리의 다른 글

백준 1001 자바  (0) 2022.03.11
백준 1000 자바  (0) 2022.03.11
백준 10172 자바  (0) 2022.03.11
백준 10171 자바  (0) 2022.03.11
백준 10718 자바  (0) 2022.03.11
728x90

2022.03.08

백준 1966 프린터 큐

#1966 프린터 큐
from collections import deque
# 테스트 케이스  T
T = int(input())

for i in range(T):
  N,M = map(int, input().split())
  
  # 인덱스의 변화를 보여줄 큐, idx를 하나 만든후 인덱스를 저장한다.
  idx = deque()
  for j in range(N):
    idx.append(j)
    
  # arr에 우선순위로 주어진 입력값을 저장한다.
  arr = deque()
  array = list(map(int, input().split()))
  for j in array:
    arr.append(j)
  
  # num은 queue에서 값이 pop될 때마다 +1 해줘 M번째 값이 몇 번째로 출력되는지 계산한다.
  num = 1
  while True:
    if M == idx[0] and arr[0] == max(arr):
      print(num)
      break
    else:
      if max(arr) == arr[0]:
        arr.popleft()
        idx.popleft()
        num += 1
      else:
        arr.append(arr.popleft())
        idx.append(idx.popleft())

 

그동안 고민하면서 못 풀었던 문제를 드디어 풀었다.

처음에는 큐 하나만 이용해서 풀려고 하다가 인덱스도 큐로 만들어서 변화를 주어야겠구나 생각을 하게 되었고

또 거기서 한동안 못풀다가 while문에서 멈추는 조건을 잘 못주고 있었다는 걸 깨닫고 풀 수 있었다.

728x90

'Algorithm' 카테고리의 다른 글

백준 14501 파이썬  (0) 2022.02.26
백준 13458 파이썬  (0) 2022.02.25
백준 1654 파이썬  (0) 2022.02.23
백준 10816 파이썬  (0) 2022.02.22
백준 10773 파이썬  (0) 2022.02.15
728x90

2022.02.26

백준 14501 퇴사

# 14501 퇴사

N = int(input())
T = []
P = []

# 날짜와 금액을 나눠 사용하기 위해 두 리스트에 나눠 저장한다.
for i in range(N):
    a,b = map(int, input().split())
    T.append(a)
    P.append(b)

# result에는 각 날짜로 얻을 수 있는 가장 큰 금액을 저장한다.
result = []
for i in range(N):
    # 현재 날짜와 수행해야 하는 일수를 더해 퇴사날보다 늦으면 0 아니면 P의 값을 저장
    if i + T[i] <= N:
        result.append(P[i])
    else:
        result.append(0)

# 현재 날짜의 수행에 필요한 일수 이후의 날짜이면서 result의 값이 0이 아닌경우
# 얻을 수 있는 최대의 값을 구해준다.
for i in range(N):
    num = i+T[i]
    for j in range(num,N):
        if result[j] != 0:
            result[j] = max(result[j], result[i] + P[j] )

        
print(max(result))        
728x90

'Algorithm' 카테고리의 다른 글

백준 1966 파이썬  (0) 2022.03.08
백준 13458 파이썬  (0) 2022.02.25
백준 1654 파이썬  (0) 2022.02.23
백준 10816 파이썬  (0) 2022.02.22
백준 10773 파이썬  (0) 2022.02.15
728x90

2022.02.25 알고리즘 스터디

백준 13458 시험감독

# 13458 시험감독
import sys
N = int(input())
A = list(map(int, sys.stdin.readline().split()))
B,C = map(int, input().split())

# cnt = 총 감독관을 제외한 부 감독관의 수
cnt = 0
for i in A:
    j = i - B
    if j > 0:
        if j/C > j//C:
            cnt += j//C + 1
        else:
            cnt += j//C
print(cnt + N)

스터디의 마지막 날... 마지막 날이라고 그냥 쉬운 문제 풀자고 했다 ㅋㅋ

브론즈 2문제인데 이제는 실버 아랫단계 문제나 브론즈 1,2랑 무슨 차이인지는 잘 모르겠다 둘 다 어려운데??

처음에 문제를 잘못 이해해서 총감독관의 수가 0 아니면 1이라고 생각을 하고 코드를 짰는데

알고 보니 총감독관은 각각의 시험장에 무조건 1명이 존재하는 문제였다.

728x90

'Algorithm' 카테고리의 다른 글

백준 1966 파이썬  (0) 2022.03.08
백준 14501 파이썬  (0) 2022.02.26
백준 1654 파이썬  (0) 2022.02.23
백준 10816 파이썬  (0) 2022.02.22
백준 10773 파이썬  (0) 2022.02.15
728x90

2022.02.23

백준 1654 랜선 자르기

# 1654 랜선 자르기

# K,N 입력받는 값
K, N = map(int, input().split())

# K 줄에 걸쳐 입력받는 값을 arr에 저장
arr = []
for i in range(K):
    arr.append(int(input()))

#이분탐색을 시작할 start와 end값을 지정해준다
start = 0
end = max(arr)

while start <= end:
# end가 1일 경우 mid가 0이 되어 ZeroDivisionError가 발생하는걸 막는다.
    if end == 1:
        break
    mid = (start+end)//2
# arr 값을 하나씩 받아와 mid로 나눠진 몫으로 랜선의 갯수를 파악한다. 
    M = 0
    for i in arr:
        M += i//mid
    
    if N > M:
        end = mid - 1
    else:
        start = mid + 1
print(end)

처음 ZeroDivisionError가 발생했을 때는 try, except 구문을 사용하여 단순히 넘기는 시도를 했다.

그런데 그럴 경우에는 N과 K의 숫자가 같으면서 가장 긴 랜선의 길이가 1일 때

올바른 답을 출력시키지 못했기 때문에 다른 방법을 찾아봐야 했다.

 

여러 방법을 사용해봐도 틀렸습니다만 뜨길래 어떻게 풀어야 할까 생각하던중에

문제가 되는 것은 end가 1일 때만이라는 걸 생각하고 그냥 end가 1이면 반복문을 끝내는 조건을 써넣었다.

728x90

'Algorithm' 카테고리의 다른 글

백준 14501 파이썬  (0) 2022.02.26
백준 13458 파이썬  (0) 2022.02.25
백준 10816 파이썬  (0) 2022.02.22
백준 10773 파이썬  (0) 2022.02.15
백준 9012 파이썬  (0) 2022.02.15
728x90

2022.02.22

백준 10816 숫자 카드 2

# 10816
import sys
N = int(input())
arr = list(map(int, sys.stdin.readline().split()))
M = int(input())
fin = list(map(int, sys.stdin.readline().split()))

num = {}
for i in arr:
    num[i] = 0

for i in arr:
    num[i] += 1

for i in fin:
    try:
        print(num[i], end = ' ')
    except:
        print(0, end = ' ')

count 함수를 사용하면 되지 않을까? 생각했는데 입력 숫자가 커서 그런가 역시나 시간 초과가 나왔다.

그래서 이분탐색 알고리즘을 써야 하나 했는데 라이브러리를 사용하지 않고는 어떻게 풀이할지 생각이 나질 않아서

그냥 딕셔너리로 풀었다.

 

N개의 주어진 숫자들을 키값으로 하여 같은 값이 나오면 +1씩 해줬다.

그래서 M개의 주어진 숫자들의 키값에 저장된 값을 출력하는데 try, except 구문을 사용하여

키값이 없을 경우 0을 출력하게 했다.

728x90

'Algorithm' 카테고리의 다른 글

백준 13458 파이썬  (0) 2022.02.25
백준 1654 파이썬  (0) 2022.02.23
백준 10773 파이썬  (0) 2022.02.15
백준 9012 파이썬  (0) 2022.02.15
백준 1904 파이썬  (0) 2022.02.15
728x90

2022.02.15

백준 10773 제로

# 10773 제로
import sys
K = int(input())
num =[0]

for i in range(K):
    r = int(sys.stdin.readline())
    if r == 0:
        num.pop()
    else:
        num.append(r)
print(sum(num))

반복적으로 입력받아야 하는 K의 숫자 범위가 커서 sys를 사용했다.

스택으로 쉽게 풀 수 있는 문제로 입력받은 숫자를 리스트에 하나씩 넣어주다가

0을 입력받으면 최근에 입력받은 숫자를 pop으로 추출하면 된다.

728x90

'Algorithm' 카테고리의 다른 글

백준 1654 파이썬  (0) 2022.02.23
백준 10816 파이썬  (0) 2022.02.22
백준 9012 파이썬  (0) 2022.02.15
백준 1904 파이썬  (0) 2022.02.15
백준 10989 파이썬  (0) 2022.02.09

+ Recent posts