728x90
반응형

 

1. 시간 초과 코드 

# 2644

n = int(input()) # 전체 사람의 수 
a, b = map(int,input().split())
m = int(input()) # 관계의 수 

graph = [ [] for _ in range(n+1) ] 

for i in range(m):
  p, c = map(int,input().split())
  graph[p].append(c)

def bfs(x, y):
  p ,cnt = 0, 1

  while 1: 
    for i in range(1,n+1):
      if x in graph[i]:
        p = i 
        break 
    
    if p == 0 : return -1 
    else : cnt += 1 
    
    if y in graph[p] : return cnt 
    else : x = p  

print( bfs(a,b) ) 

 

2. 정답 코드 

# 2644
from collections import deque 

n = int(input()) # 전체 사람의 수 
a, b = map(int,input().split())
m = int(input()) # 관계의 수 

graph = [ [] for _ in range(n+1) ] 

for i in range(m):
  p, c = map(int,input().split())
  graph[p].append(c)
  graph[c].append(p)


def bfs(s, e):
  cnt = 0 
  queue = deque()
  queue.append(s) 
  visited = [False] * (n+1)  # 한 번 방문했는데 없던 곳 또 가지 않는다. 

  while queue:
    cnt += 1  # 한 단계 건널 때 마다 촌수 추가 
    
    for _ in range(len(queue)): # 지금 queue의 원소 만큼 반복 
      x = queue.popleft()

      if x == e : 
        return cnt-1
      
      for y in graph[x]:
        # 방문 안한 부분이 있으면 queue에 넣고 방문처리 
        if visited[y] == False:
          visited[y] = True 
          queue.append(y)
  
  return -1 

print( bfs(a,b) ) 
728x90
반응형

'백준 > DFS_BFS' 카테고리의 다른 글

#1743 음식물 피하기 파이썬  (0) 2021.04.08
# 11725 트리의 부모 찾기 파이썬  (0) 2021.03.11
# 2583번: 영역 구하기  (0) 2020.10.12
# 2468번: 안전 영역  (0) 2020.10.12
# 4963번: 섬의 개수  (0) 2020.10.12
728x90
반응형

 

 

acmicpc.net/problem/2217

 

2217번: 로프

N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하

www.acmicpc.net

# 2217

n = int(input()) # 로프의 수 
data = []

for i in range(n):
  data.append(int(input()))

data.sort(reverse=True)

max_w = []

for i in range(n):
  max_w.append( data[i]*(i+1))

print(max(max_w))

 

 

너무 어렵게 생각하지 않는 것이 중요하다.

기본적으로 입력받은 중량 값을 역으로 정렬하여 사용한다. 

 

우선, 가장 기본적으로 들 수 있는 중량은 제일 큰 로프의 중량 값이다.

2가지의 로프를 사용한다면, 

가장 큰 로프는 그다음으로 큰 로프보다 항상 크므로 

두 번째 로프의 2배만큼의 중량을 들 수 있을 것이다. 

 

3가지의 로프를 사용하고.. 그 이상의 로프를 사용한다고 해도 마찬가지이다. 

 

이렇게 새로운 배열을 만들고 나서 가장 큰 값을 고르면 된다. 

 

 

 

728x90
반응형

'백준 > 그리디' 카테고리의 다른 글

#13305 주유소 파이썬  (0) 2021.03.08
# 4796 캠핑  (0) 2021.03.08
# 1439번: 뒤집기  (0) 2020.10.15
# 1931 회의실 배정  (0) 2020.09.18
# 14720 우유 축제  (0) 2020.09.18
728x90
반응형

 

 

 

www.acmicpc.net/problem/13305

 

13305번: 주유소

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1

www.acmicpc.net

 

# 13305 

n = int(input()) # 도시의 수 
dist = list(map(int, input().split() ))
cost = list(map(int, input().split() ))

# 처음 출발할 때, 무조건 기름 필요 
total = cost[0]*dist[0]
m = cost[0]

# 나보다 작은 값이 나오면 그 이후로 그 값으로 계산 
# 마지막 나라의 가격은 사실상 사용되지 않으므로 무시 가능 
for i in range(1,n-1):
  if cost[i] < m : 
    total += dist[i] * cost[i]
    m = cost[i]
  else : 
    total += dist[i]*m

print(total)

 

+) 주의사항 

만약에 계속 min 함수를 이용해서 최솟값을 찾고자 하면 시간 초과 오류가 날 수 있음. 

처음에 아래와 같이 코드를 작성했더니 시간 초과 오류가 남. 

# 13305 

n = int(input()) # 도시의 수 
dist = list(map(int, input().split() ))
cost = list(map(int, input().split() ))

# 처음 출발할 때, 무조건 기름 필요 
total = cost[0]*dist[0]

# 가장 작은 값 이후로는 다 작은 값으로 계산 
e = len(cost)
while e > 1 : 
  cost = cost[:e] 

  small = min(cost)
  s_i = cost.index(small)

  # print("최소값은", small, "index : ", s_i)

  for i in dist[s_i:e] :
    total += small* i
    #print('total: ', total)
    #print(dist[s_i:e])

  e = s_i

if e == 0 : 
  total -= cost[0]*dist[0]

print(total)
728x90
반응형

'백준 > 그리디' 카테고리의 다른 글

# 2217 로프  (0) 2021.03.08
# 4796 캠핑  (0) 2021.03.08
# 1439번: 뒤집기  (0) 2020.10.15
# 1931 회의실 배정  (0) 2020.09.18
# 14720 우유 축제  (0) 2020.09.18
728x90
반응형

www.acmicpc.net/problem/4796

 

4796번: 캠핑

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다.

www.acmicpc.net

 

# 4796

data = [] 
while True : 
  L, p, v = map(int, input().split() ) 
  if L + p + v == 0 : 
    break 
  else : 
    data.append([L,p,v])

for i in data : 
  L, p, v = i[0], i[1], i[2]

  cnt = ( v//p )*L
  re = v - p*(v//p)

  if re <= L :
    cnt += re
  else : 
    cnt += L
  
  print("Case",str(data.index(i)+1)+":",cnt)

 

 

728x90
반응형

'백준 > 그리디' 카테고리의 다른 글

# 2217 로프  (0) 2021.03.08
#13305 주유소 파이썬  (0) 2021.03.08
# 1439번: 뒤집기  (0) 2020.10.15
# 1931 회의실 배정  (0) 2020.09.18
# 14720 우유 축제  (0) 2020.09.18
728x90
반응형

1. 공부 기간 : 2/17 ~ 2/19 , 약 3일

 

2. 사용 교재 : 2021 에듀윌 kbs 한국어능력시험 한권끝장

 

3. 공부 방법 : 

 

사실 2주 정도 기간을 잡고 공부를 하려고 계획했었다.

그런데 한국사 시험 끝나고 잠깐 쉬었다가.. 설날에 시골 내려가고 하다 보니 결국 3일 밖에 공부 못했다. 

 

원래는 기출 문제도 인터넷에서 풀어 볼 수 있다고 하길래 풀어보고 그러려고 했는데 못했다. 

시간적 여유가 있는 사람은 아래 홈페이지에서 10일에 22,000원에 구매할 수 있으니 풀어보길 추천한다. 

 

klt.modnexam.com/exam/main.asp?svc_id=U01G09U900DH0H0O0GDH999UU9DHULU19UDHL0L9LLL2D9LHD01H090U9DUU011H0F1HL9DOL2L71H940U1HUU1HU0UU1HDH919201

 

KBS 한국어 능력시험

오답요인 분석 및 오답문항에 대한 학습 후 다시 한 번 오답 문항을 풀어보고 재응시 성적표를 받아볼 수 있습니다. 재응시 성적표에서는 오답요인별로 변화된 나의 노력지수와 노력강도를 통

klt.modnexam.com

 

 

이런 저런 이유로, 일단은 미리 구매해둔 에듀윌 2021 kbs 한국어 능력시험 한권끝장 책을 보기 시작했다. 

시간이 부족해서 듣기, 창안, 등등의 분야의 개념은 읽어보지 않았고 

고유어, 속담, 한자성어, 어법 부분의 개념만 살펴보았다. 

하지만 이것도 양이 꽤 되는 편이라서 읽는데 시간이 좀 걸린다. 

( 그런데 읽는다고 머리에 잘 들어오지도 않는다.. ㅜㅜ 무조건 자주 읽어 봐야 머리에 남을 것 같다.. ) 

 

 

이틀에 걸쳐서 개념을 살펴보고 마지막 날에 

홈페이지에 있는 기출문제 1회분과 기출변형 문제편을 풀어보는 것으로 공부를 마무리 했다. 

 

에듀윌 2021 kbs 한국어 능력시험 한권끝장 기출변형 문제편

 

 

4. 한국어 능력 시험 후기 : 

 

내가 0 개 국어를 하나.. 싶은 생각이 드는 생각이었다. 

표준어도 생각보다 내가 잘못 알고 있는 부분이 많았고 고유어는 정말 거의 몰랐고..

한자도 내가 참 많이 까먹었구나 싶은 생각이 들었다. 

 

한번 제대로 공부해 봤으면 좋았을 것 같다는 생각이 들어서 좀 아쉬웠다. 

공부는 거의 못했지만 가산점 받을 수 있는 점수가 나오기를 바라고 있다.. 

 

 

 

>> 성적 확인 ! 

공부 하나도 못한 창안, 국어 문화에서 높은 점수를 받고 나름 공부한 분야인 문법, 이해 부분에서 많이 틀렸다.. (?) 

솔직히 문법은 한자, 고유어 공부 하나도 못해서 거의 찍다 싶이 문제를 풀어서 예상은 했지만..

이해 부분은 열심히 풀었는데 좀 의아하다는 생각이 들었다. 

 

어쨌든,  다행이도 2-급 이면 공부량 대비 아주 만족하는 성적이다. 

 

혹시, kbs 한국어 능력검정 시험 공부 많이 못하셨더라도 ..

시험 접수 하셨다면 가서 그냥 한 번 봐 보시는 것을 추천드립니다 !! 

 

 

kbs 한국어능력시험 결과

 

 

 

728x90
반응형

+ Recent posts