반응형

 

 

www.acmicpc.net/problem/1011

 

1011번: Fly me to the Alpha Centauri

우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행

www.acmicpc.net

 

 

네 달 전부터 풀지 못했던 문제를 드디어 풀었습니다 !! 유후

이 문제는 숫자의 규칙을 이용해서 풀었습니다. 그리고 확실히 파이썬으로 하니 코드가 짧고 단순해 보이는 것 같습니다. 

코딩 테스트 볼 때에 시간이 많이 단축될 것 같아요 ㅎㅎ

 

 

 

 

 

파이썬 코드

import math

n = (int)(input())

for i in range(n):
    x,y = map(int, input().split())
    diff = y-x
    if diff <= 3:
        print(diff)
    else :
        x = (int)(math.sqrt(diff))
        if diff == x * x:
            print(2 * x - 1)
        elif diff <= (x * x + x):
            print(2 * x)
        else:
            print(2 * x + 1)

 

새로 사용한 기능은 math 모듈 안의 sqrt() 라는 기능입니다.

해당 숫자의 제곱근 값을 반환해 주는 것입니다. int로 형변환이 필요합니다.

- 그리고 한 가지 더!!

input()을 받을 때에는 꼭 int형으로 변환을 해줘야 합니다. 안 그러면 str으로 인식하는 것 같습니다ㅠㅠ

 

 

 

 

 

 

반응형
반응형

 

 

 

현재 상태

목표 : 큐, 덱까지 못 푼 문제 파이썬으로 다 풀어보기 !

 

 

 

 

 

21. 11. 19 중간점검

새로운 목표 : 위상 정렬까지 단계별 다 풀기

* 동적계획법 기초 문제를 풀어 보아야 겠다

+ 추가

 

반응형
반응형

 

 

Enumerate는 리스트의 인덱스와 함께 값을 추출할 때 사용한다.

Zip은 여러 개의 리스트에서 각각의 값을 병렬적으로 가져올 때 사용한다.

 

Enumerate

for i,j in enumerate(['tic','tac','toe']):
    print(i,j)

myList = ['a','b','c','d']
print(list(enumerate(myList)))

myTuple = {i:j for i,j in enumerate('Apple Banana Computer Dictionary Eraser Food'.split())}
print(myTuple)
0 tic
1 tac
2 toe
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
{0: 'Apple', 1: 'Banana', 2: 'Computer', 3: 'Dictionary', 4: 'Eraser', 5: 'Food'}

 

 

 

 

Zip

alist = ['a1','a2','a3']
blist = ['b1','b2','b3']

for a, b in zip(alist, blist):
    print(a,b)
a1 b1
a2 b2
a3 b3

 

 

 

Zip 과 Enumerate를 같이 사용하면?

# zip + enumerate
for i, (a, b) in enumerate(zip(alist, blist)):
    print(i,a,b)
0 a1 b1
1 a2 b2
2 a3 b3

이 때, (a,b)에서 괄호를 꼭 붙여 주어야 한다!!

 

 

 

리스트나 튜플에서 각각의 값을 꺼내어 새로운 리스트를 만들 수도 있다.

# 리스트 활용
cList = [1,2,3]
dList = [10,20,30]
eList = [100,200,300]

result = [sum(x) for x in zip(cList, dList, eList)]
print(result)

# 튜플 활용
aTuple = (1,2,3)
bTuple = (10,20,30)
cTuple = (100,200,300)

result = [sum(x) for x in zip(aTuple, bTuple, cTuple)]
print(result)
[111, 222, 333]
[111, 222, 333]

 

 

 

 

 

반응형
반응형

 

 

 

 

For Loop + append

result = [i for i in range(10)]
print(result)

result = [i for i in range(10) if i % 2 == 0]
print(result)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 4, 6, 8]

 

 

Nested For Loop

word1 = "ABC"
word2 = "CDF"
result = [i+j for i in word1 for j in word2]
print(result)

result = [i+j for i in word1 for j in word2 if not i==j]
print(result)

result = [[i+j for i in word1 ] for j in word2]
print(result)

['AC', 'AD', 'AF', 'BC', 'BD', 'BF', 'CC', 'CD', 'CF']
['AC', 'AD', 'AF', 'BC', 'BD', 'BF', 'CD', 'CF']
[['AC', 'BC', 'CC'], ['AD', 'BD', 'CD'], ['AF', 'BF', 'CF']]

 

 

 

이중 리스트

# 이중 리스트
words = 'apple banana computer doctor eraser fox grape'.split()
# print(words)

stuff = [[w.upper(), w.lower(), len(w)] for w in words]
for i in stuff:
    print(i)
['APPLE', 'apple', 5]
['BANANA', 'banana', 6]
['COMPUTER', 'computer', 8]
['DOCTOR', 'doctor', 6]
['ERASER', 'eraser', 6]
['FOX', 'fox', 3]
['GRAPE', 'grape', 5]

 

 

 

 

 

반응형
반응형

 

 

 

 

이틀동안 파이썬 기초를 마무리하였습니다 !! 

아직 완전히 자유롭게 쓰는 것은 아니기 때문에 종종 참고하러 와야 할 듯 합니다.

 

마무리하기 전에 중간에 나왔던 map 함수가 어떤 기능을 하는지 궁금해서 찾아보았습니다.

map 함수

  • map은 리스트의 요소를 지정된 함수로 처리한다.
  • 보통 여러 개의 데이터를 한번에 다른 형태로 바꾸기 위해 사용한다.

 

 

리스트에 map 사용하기

>>> a = [1.2, 2.5, 3.7, 4.6]
>>> a = list(map(int, a))
>>> a
[1, 2, 3, 4]
>>> a = list(map(str, range(10)))
>>> a
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

 

map(함수, 리스트) 이렇게 넣어주면 리스트에 함수를 적용해주는 것 같습니다 !!

 

 

 

input().split() 에 map 사용하기

a, b = map(int, input().split())
print(a, b)

이렇게하면 여러 개의 값을 한 줄로 받아올 수 있습니다.

 

 

일반 함수에 map 사용하기

>>> users = [{'mail': 'gregorythomas@gmail.com', 'name': 'Brett Holland', 'sex': 'M'},
...  {'mail': 'hintoncynthia@hotmail.com', 'name': 'Madison Martinez', 'sex': 'F'},
...  {'mail': 'wwagner@gmail.com', 'name': 'Michael Jenkins', 'sex': 'M'},
...  {'mail': 'daniel79@gmail.com', 'name': 'Karen Rodriguez', 'sex': 'F'},
...  {'mail': 'ujackson@gmail.com', 'name': 'Amber Rhodes', 'sex': 'F'}]
>>> def conver_to_name(user):
...     first, last = user["name"].split()
...     return {"first": first, "last": last}
...
>>> for name in map(conver_to_name, users):
...     print(name)
...
{'first': 'Brett', 'last': 'Holland'}
{'first': 'Madison', 'last': 'Martinez'}
{'first': 'Michael', 'last': 'Jenkins'}
{'first': 'Karen', 'last': 'Rodriguez'}
{'first': 'Amber', 'last': 'Rhodes'}

 

 

 

그리고....람다 함수도 있지만, 아직 받아들일 준비가 안되어서....이만,,,,,

 

 

 

반응형
반응형

 

 

 

 

datetime

datetime 모듈

  • 날짜와 시간을 사용하게 해주는 라이브러리

 

import datetime

christmas_2016 = datetime.datetime(2016,12,25)

print(christmas_2016)
2016-12-25 00:00:00

 

 

 

datetime과 date

from _datetime import date, datetime

print(date.today())
print(datetime.now())

 

date 모듈은 from _datetime을 붙여주어야 실행이 되네요 !

datetime 모듈은 from _datetime을 붙여주니 datetime.datetime.now() -> datetime.now() 로 한 번만 써도 되게 합니다 !

왜 앞에 '_'를 붙여야 되는지는 모르겠지만....?

 

 

 

 

timedelta

timedelta 클래스

  • 시간의 연산을 가능하게 해주는 클래스

 

현재로부터 100일 후 9시의 시간을 반환하는 예제 )

import datetime

hundred_after = datetime.datetime.now().replace(hour=9, minute=0, second=0) + datetime.timedelta(days = 100)

print("{}/{}/{}  {}:{}:{}".format(hundred_after.year,hundred_after.month, hundred_after.day, hundred_after.hour, hundred_after.minute, hundred_after.second))

 

 

 

반응형

+ Recent posts