본문 바로가기

코딩 깔짝12

[Python] 21.07.11 : BOJ 11652 외 BOJ 11652번(https://www.acmicpc.net/problem/11652)을 풀며. . . . 파이썬 코드들을 찾아보면 언더스코어( _ )가 자주 보인다. 1. 인터프리터에서 사용될 때에는 '마지막으로 실행한 결과값'을 출력한다. 2. '값을 무시한다'의 의미로도 사용된다. 3. 숫자값의 자릿수 구분 용도(Python 3.6) 이 외에도 다른 용도가 더 있는데, 이건 나중에 써야겠다. . . . 이 문제에서는 Dictionary를 사용했다. 입력받은 숫자를 Key, 숫자의 갯수를 Value로 받았다. 숫자를 받았는데, 이미 있는 숫자(Key)다? Value 값을 +1 해준다. 없는 숫자다? Value가 1인 새로운 Key를 추가한다. 다 받은 후에 Dictionary를 리스트로 변환하면 2.. 2021. 7. 13.
[Python] 21.07.11 : BOJ 10825 + 빠른 출력 BOJ 10825번(https://www.acmicpc.net/problem/10825)을 풀며. . . . 일단 보자마자 생각한 어려움 1. 문자열(이름), 숫자(점수 3종)를 동시에 입력받아야 한다. 2. 정렬 기준이 4가지다. 입력받은 1명의 이름, 점수 3종을 하나의 리스트로 만들고, 전체 리스트는 2차원 리스트가 된다. [이름, 점수1, 점수2, 점수3]을 입력받을 때, 자료형은 신경쓰지 말고 일단 list()로 받는다. -> arr = [list(sys.stdin.readline().split()) for _ in range(N)] 받은 리스트들을 정렬한다. 각 정렬 기준들의 우선순위와 정렬 기준이 오름차순인지, 내림차순인지 잘 확인해야 한다. -> arr.sort(key=lambda x: (.. 2021. 7. 11.
[Python] 21.07.10 : BOJ 11576 + join() BOJ 11576번(https://www.acmicpc.net/problem/11576)을 풀며. . . . 진법 변환(https://ballenabox.tistory.com/6)에서 사용했던 방법을 어찌저찌 굴리면 될 것 같다. 예제 입력1 17 8 2 2 16 1단계 : 17진법 2자리 숫자, "2 16"을 10진법으로 변환 2단계 : 10진법으로 변환된 숫자를 8진법으로 변환 3단계 : 변환된 8진법을 자릿수별로 출력 우선...이전 글에서 리스트의 pop()을 사용했는데, 이것을 쓰면 변환할 자릿수의 index를 동적으로 작성할 필요가 없다. 마지막 index가 낮은 자릿수니, index를 -1로 잡아 낮은 자릿수부터 변환시킨다(1단계). -> sum += arr[-1] * (17**i) arr.p.. 2021. 7. 10.
[Python] 21.07.09 : BOJ 1158 BOJ 1158번(https://www.acmicpc.net/problem/1158)을 풀며. . . . 좀 어려웠다. 전형적인 막막함. 문제를 푸는 방법은 알겠는데 코드로 어떻게 욺길지가 문제였다. N. K = 7, 3일 때 1, 2, 3, 4, 5, 6, 7 의 리스트가 있으면 첫 제거는 3번째인 3을 제거 : 1, 2, 4, 5, 6, 7 두번째 제거는 4에서부터 3번째에 있는 6을 제거 : 1, 2, 4, 5, 7 세번째 제거는 7에서부터 3번째에 있는 2를 제거 : 1, 4, 5, 7 네번째 제거는 4에서부터 3번째에 있는 7을 제거 : 1, 4, 5 다섯번째 제거는 1에서부터 3번째에 있는 5를 제거 : 1, 4 여섯번째 제거는 1에서부터 3번째에 있는 1을 제거 : 4 마지막 제거 4 그래서.. 2021. 7. 10.
[Python] 21.07.08 : BOJ 10989 BOJ 10989번(https://www.acmicpc.net/problem/10989)을 풀며. 음....문제 자체는 간단해 보인다. 그냥 정렬이니까. 근데 문제는 수의 개수가 10,000,000개 이하다. 메모리 제한도 빡세다. 단순히 sort로 해결하려 하면 메모리 제한의 철퇴를 맞는다. . . . 해법을 결정하기 전에 문제의 구성 요소를 다시 보자. 1. 입력되는 숫자의 수가 많다. 2. 숫자만 입력된다. 1에서 주의할 점은 - 빠른입력이 필요하다. - sort를 써도 소용없다. 2는 그대로 받아들이면 된다. 다른 문제처럼 정렬에 있어서 고려할 다른 요소가 없다는 것이다. sort를 써도 소용이 없다는 것은 정렬시키려 하는 순간 문제가 터진다는 의미다. 무수한 숫자를 입력받는것도 모자라 정렬시키고.. 2021. 7. 8.
[Python] 21.07.07 : 2차원 리스트의 정렬 BOJ 11650번(https://www.acmicpc.net/problem/11650)을 풀며. 대부분의 해법이 파이썬답게 입력받은 2차원 배열을 sorted 함수로 정렬시켜 해결했다. sorted 함수는 기존 리스트는 냅두고, 정렬된 새로운 리스트를 반환한다. sort()의 인자로 비교 방식을 조절할 수 있다. 2차원 배열 X에서 2번째 인자를 기준으로 정렬 후 1번째 인자로 정렬한다면, X.sort(key=lambda x: (x[1], x[0])) 로 쓴다. 역순(내림차순)으로 정렬하려면 -x[0] 2021. 7. 7.