목록파이썬 (149)
차밍이
해킹 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 256 MB 8889 3518 2481 38.453% 문제 최흉최악의 해커 yum3이 네트워크 시설의 한 컴퓨터를 해킹했다! 이제 서로에 의존하는 컴퓨터들은 점차 하나둘 전염되기 시작한다. 어떤 컴퓨터 a가 다른 컴퓨터 b에 의존한다면, b가 감염되면 그로부터 일정 시간 뒤 a도 감염되고 만다. 이때 b가 a를 의존하지 않는다면, a가 감염되더라도 b는 안전하다. 최흉최악의 해커 yum3이 해킹한 컴퓨터 번호와 각 의존성이 주어질 때, 해킹당한 컴퓨터까지 포함하여 총 몇 대의 컴퓨터가 감염되며 그에 걸리는 시간이 얼마인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 테스트 케이스의 개수는 최대 100개..
효율적인 해킹 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 5 초 256 MB 41545 7680 5077 19.779% 문제 해커 김지민은 잘 알려진 어느 회사를 해킹하려고 한다. 이 회사는 N개의 컴퓨터로 이루어져 있다. 김지민은 귀찮기 때문에, 한 번의 해킹으로 여러 개의 컴퓨터를 해킹 할 수 있는 컴퓨터를 해킹하려고 한다. 이 회사의 컴퓨터는 신뢰하는 관계와, 신뢰하지 않는 관계로 이루어져 있는데, A가 B를 신뢰하는 경우에는 B를 해킹하면, A도 해킹할 수 있다는 소리다. 이 회사의 컴퓨터의 신뢰하는 관계가 주어졌을 때, 한 번에 가장 많은 컴퓨터를 해킹할 수 있는 컴퓨터의 번호를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에, N과 M이 들어온다. N은 10,000보다 작거나 같은..
숨바꼭질 성공 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 128 MB 147202 41776 26180 25.026% 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 입력 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K..
목차 들어가기 Pandas DataFrame에서 apply 매소드를 사용해서 함수를 적용한다. 보통 단일 인자 함수를 사용하는데, 복수 인자를 넣을 수도 있다. 복수 인자를 사용하는 방식에는 두 가지가 있다. 함수가 복수 인자를 받는 경우 복수의 Column 의 데이터를 함수에 넘겨주는 경우 두 가지 방법에 대해서 알아보고 적절하게 사용하자. 복수 인자 사용하는 경우 import pandas as pd df = pd.DataFrame({"A": [10, 20, 30], "B": [-10, -20, -30]}) def subtractAndMultiply(x, y, z): return (x - y) * z df['A'].apply(subtractAndMultiply, args=(-10, 2)) df['A']..
목차 들어가며 jupyter notebook에서 셀 단위로 속도를 확인하는 방법을 알아보자. 속도를 비교해볼 함수 리스트의 원소들을 모두 곱하는 함수로 아래와 같다. def multiplyAll_v1(s:list) -> int: ans = 1 for n in s: ans *= n return ans from functools import reduce def multiplyAll_v2(s:list) -> int: return eval("*".join([str(n) for n in s])) def multiplyAll_v3(s:list) -> int: return reduce(lambda x, y: x * y, s) 해당 함수나 reduce, eval 함수에 대해 더 알고 싶다면 [Python] 리스트 요소..
목차 들어가며 리스트 요소들 전체의 합은 sum으로 구해지는데 리스트 요소들 끼리의 곱은 구해지지가 않는다. 그래서 해당 방법에 대해 알아보자. 총 3가지의 종류가 있다. for문 돌아가며 수행하기 eval과 join 함수를 사용하기 reduce함수 사용하기 for 문 수행하기 def multiplyAll_v1(s:list) -> int: ans = 1 for n in s: ans *= n return ans eval 함수와 join 메소드 사용하기 from functools import reduce def multiplyAll_v2(s:list) -> int: return eval("*".join([str(n) for n in s])) eval 함수에 대해서 잘 모른다면 다음 포스팅을 참고하면 됩니다...
목차 eval() 과 exec()는 무엇인가? eval 과 exec 함수는 파이썬의 내장 함수이다. 문자열로 적어진 수식 혹은 코드를 파이썬 코드로 실행할 때 사용된다. eval : 문자열로 구성된 식을 처리한다. exec : 문자열로 구선된 코드를 컴파일하여 수행한다. eval 함수 문자열 식을 수행한다 식만 처리하므로 변수 선언 및 할당과 같은 것은 할 수 없다. eval("3 * 4 * 5 * 6") >>> 360 코드 내에 변수들의 값 또한 잘 받아서 수행한다. a = 10 eval("a * 3 * 4 * 5 * 6") # 문자열 식의 a 는 파이썬의 a 변수와 동일 >>> 3600 eval은 수행한 후 결과 또한 반환한다. 위의 수식 결과를 return 하는 것을 볼 수 있음 exec 함수 문자..
목차 getattr() 속성 값을 가져오는 함수 class Animal: leg = 4 size = "Big" def enemy(self): print("컹컹컹!") def friend(self): print("왕왕조왕") animal = Animal() animal.leg >>> 4 getattr(animal, "leg") >>> 4 geattr에 대해서는 더 자세하게 작성한 게시글을 참고하면 좋습니다. [Python] getattr() 를 사용해서 간결하게 코드 작성하기, 예시 및 장점 [Python] getattr() 를 사용해서 간결하게 코드 작성하기, 예시 및 장점 목차 getattr() 구문 getattr(object, attribute, default) [매개변수] object : 필수. 객..
목차 reduce 함수란? reduce 함수는 반복 가능한 객체이다. 각 요소들을 이전 연산 결과들과 누적하여 반환한다. functools 모듈에서 불러와야 한다. from functools import reduce reduce 예제 from functools import reduce dataList = [1, 2, 3, 4, 5] def sum(a, b): return a + b reduce(sum, dataList) >>> 15 reduce 실행 과정 sum(sum(sum(sum(1, 2), 3), 4), 5) => ((((1 + 2) + 3) + 4) +5) => 15 시각적으로 살펴보면 다음과 같다. Reference https://technote.kr/344 https://heytech.tist..
목차 getattr() 구문 getattr(object, attribute, default) [매개변수] object : 필수. 객체. attribute : 필수. 값을 얻을 속성명. default : 선택. 속성이 없는 경우 반환할 값. getattr() 함수의 정의 gattattr(object, name) 으로 object안의 메소드(name)을 호출한다. object 내부의 name이라는 멤버를 반환한다. 사실 정의만 보면 잘 이해가 되지 않는다. 조금 더 쉽게 애기하자면 문자열로 객체의 속성값이나 메소드를 사용할 수 있다. Example 예제를 보면 쉽게 이해할 수 있다. class Animal: leg = 4 size = "Big" def enemy(self): print("컹컹컹!") def ..