일단 코드는 다음과 같이 하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cityNum = int(input())
roads = list(map(int, input().split()))
price = list(map(int, input().split()))
 
minPrice = price[0]  # 주유소 리터당 가격이 가장 작은 것
res = 0
# 마지막 도시(=도착지)의 L는 따질 필요가 없다.(=n-1 도시의 수 만큼 반복)
for i in range(cityNum-1):
    if minPrice <= price[i]:
        res = res + (minPrice * roads[i])
    elif minPrice > price[i]:
        minPrice = price[i]
        res = res + (minPrice * roads[i])
print(res)
cs

 

전략 설명
[예시 그림]
   3      2      1
A ---> B ---> C ---> D
5L     2L     3L     1L

1. 첫 번째 도시에서는 무조건 다음 도시까지의 거리만큼을 주유해야 한다.
따라서, 가장 작은 주유소 리터당 가격(=minPrice)를 첫 번째 도시에서 가지게 된다.
[예시] A도시에서 주유를 하면 무조건 5L 를 3만큼 가야 한다.
따라서, minPrice = 5로 시작해서, res=5L*3이 된다.

2. 다음 도시부터는 도시에서 가지는 리터당 주유소 가격이 가장 작은 값으로 계속 그다음 도시까지의 거리만큼 넣으면 된다.
[예시] B도시에서 주유를 하면 이전도시(A도시)보다 주유소 리터당 가격이 작으므로 (5L > 2L), minPrice = 2L로 바뀌고,
다음 도시(C도시)까지의 거리만큼 이동해서 res = res + (2L * 2) 가 된다.

3. 마지막 도시에 도착할 때까지 2번(minPrice와 res 업데이트) 반복
[예시] C도시에서 B도시의 리터당 주유소 가격이 더 크므로 (2L < 3L), 
더 작은 가격을 가졌던 이전 도시(B도시)에서 C에서 D로 가는 거리만큼 더 넣어야 최소비용이 들어감을 알 수 있다.
따라서, res = res + (2L * 1)이 된다.

최종 값은 (5L*3) + (2L * 2) + (2L * 1) 가 된다.



반성
전략 자체에 대해서 떠오르는데 어려웠다...

 

 

문제 출처: https://www.acmicpc.net/problem/13305

 

13305번: 주유소

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

www.acmicpc.net

생각보다 책의 진도가 나가지 않고 있다는 점이 변수이다.

우선 1부 IT 기초 지식 중 소프트웨어와 운영체제에 대해서 정리를 하고자 한다.

 

읽은 부분 중에서 가장 기억에 남는 내용은 API(응용프로그램 프로그래밍 인터페이스) 관련 내용이다. 

즉, 새로운 프로그램을 만들 때, 완전히 새롭게 모든 것을 생성 시키는 것이 아니라, "존재하는 기술을 새로 만들지 않고" 다른 프로그램의 API를 사용해서 만든다는 것이다. 

 

또 하나의 중요한 내용은 알고리즘에 대한 내용이다. 유튜브에서도, 페이스북에서도, 스포티파이에서도, 넷플릭스에서도, 어느 사이트나 플랫폼을 사용하든지 요즘은 없어서는 안되는 것이 바로 알고리즘이다. 사용자들의 행동패턴을 파악하고, 그에 따라서 사용자에게 관심과 흥미가 깊을 것 같은 주제를 우선순위로 처리해서 보여주는 형태의 알고리즘들은 거의 모든 플랫폼에서 사용된다고 볼 수 있다.

이런 알고리즘은 결국 얼마나 어떤 논리에 의해서 잘 만들어지느냐가 요즘은 관건이다. 스포티파이(spotify)의 경우 알고리즘이 굉장히 뛰어나다고 알려져있고, 이를 위해서 알고리즘 개발자들에게 투자하는 액수 또한 굉장하다는 점이 있다. 

개인적인 생각으로는 결국 이는 수학과 데이터, 확률, AI/ML/딥러닝 등 모든 것이 복합적으로 이루어진 영역이기 때문에 더욱 어렵지 않을까라는 생각이 들기도 한다. 그만큼 알고리즘은 끊임없이 발전을 하고 있다는 것이다.

spotify recommendation algorithm


1장의 내용을 이렇게 소프트웨어와 연관이 있다면, 2장은 운영체제에 대해서 이야기가 나온다.

운영체제하면 역시나 빼놓을 수 없는 역사적 사실은 블랙베리의 몰락이다. 한 때는 블랙베리가 최고였던 적이 있었으나, OS의 변화라는 흐름을 타지 못하면서 지금은 세계 3위 OS 안에도 들지 못하게 되었다

의외의 부분은 인도의 카이OS가 세계 3위 OS 안에 들어갔다는 점이다. 그러면서도 한편 역시나 인도라는 생각이 든다. 인도는 세계적으로도 수학이나 컴퓨터와 같이 이과적 성향의 과목들에서 뛰어남을 보인다. 또한, 인구수도 중국에 밀리지 않을만큼으로 많다. 그렇게 생각해보면 역시 인도를 결코 관심영역에서 놓치지 않아야한다는 생각이 들기도 한다.

세계 3위의 OS들


일단 이렇게까지 인상깊게 읽은 부분들에 대해서 정리를 해보았다. 

원래라면 skimming 하듯이 책을 읽으려고 했으나, 예상보다 더 생각을 많이 하고 자세하게 정독을 하면서 읽게 되다보니 읽는 속도가 더디게 되었다.

그래도 내용 하나하나가 나름 IT분야에 첫걸음을 디디고 있는 사람에게는 굉장히 의미있는 책이라는 것을 확실한 것 같다. 일단 더 읽을 부분이 많기에 천천히 꾸준히 읽으면서 정리를 하면 도움이 될 것으로 기대된다.

 


도서: http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791155813355&orderClick=LAG&Kc= 

 

IT 좀 아는 사람 - 교보문고

비전공자도 IT 전문가처럼 생각하는 법 | IT 시대가 왔지만, IT 아는 사람은 없다? IT 전문가처럼 생각하고 대화하는 법 “모든 기업의 리더가 IT 전문가가 돼야 한다. 그리고 모든 기업이 앱 기업이

www.kyobobook.co.kr

+ Recent posts