본문 바로가기

전체 글271

로봇 - Python, 구현 출처 : https://www.acmicpc.net/problem/13901  코드 import sys# 입력 처리data = sys.stdin.read().splitlines()R, C = map(int, data.pop(0).split(" "))room = [[False] * C for _ in range(R)]# 장애물 설치k = int(data.pop(0))for _ in range(k): br, bc = map(int, data.pop(0).split(" ")) room[br][bc] = Truer, c = map(int, data.pop(0).split(" "))commands = list(map(int, data.pop(0).split()))# 1 : up, 2 : down, 3 .. 2025. 3. 26.
파이썬 자주 사용하는 라이브러리 모음 - 코테 꿀팁 1. mathimport mathprint(math.factorial(5)) # 5! = 120print(math.gcd(36, 60)) # 최대공약수(GCD) = 12print(math.sqrt(25)) # 제곱근 = 5.0print(math.ceil(3.1)) # 올림 = 4print(math.floor(3.9)) # 내림 = 32. itertoolsimport itertoolsarr = [1, 2, 3]# 순열 (3개 중 2개를 선택하는 모든 경우) -> 순서 의미 있음print(list(itertools.permutations(arr, 2)))#[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]# 조합 (3개 중 2개를 뽑는 경우) -> 순서 .. 2025. 3. 22.
그렙(프로그래머스) 코딩테스트 후기 알고리즘 3문, SQL 2문 나왔습니다. SQL 문제는 그냥 주는 문제, 너무 쉬워서 오히려 의심스러웠습니다. 알고리즘 난이도는 그렇게 어렵지 않았는데, 실버 상위, 골드 하위 정도의 난이도였습니다. 다 푼 거 같은데 결과는 탈락.... 찾아보니까 올솔 하고도 탈락한 경우가 많더라구요? JD나 기업과 잘 맞는 사람을 찾는가 봅니다. 그래도 면접은 볼 줄 알았는데..... 2025. 3. 21.
펄어비스 코딩테스트 후기 시험 본지 한달이 지났는데, 갑자기 생각나서 씁니다. 문제는 총 15문제로 알고리즘 3문, CS 12문이었습니다. 문제 난이도는 그렇게 어렵지는 않았습니다. 다만 시험 칠 수 있는 언어가 C, C++ 인데 문제풀이를 원래 JAVA로 하다가, 최근에는 Python으로 하고 있단 말이죠? 그래서 일단 기억나는데로 하면서 막히면 라이브러리 뒤지면서 풀다보니 시간이 좀 많이 낭비됐습니다. 대충 3솔은 한 거 같은데, 3번이 좀 애매합니다. 쉽게 풀었었는데, 제가 문제를 잘 못 이해했을 수도 있어서요 그리고 CS는 대차게 말아먹었습니다. 결과는 당연히 탈락이었구요. 펄어비스 노리는 분들은 알고리즘도 알고리즘이지만 CS를 잘 준비하시는 게 좋을 것 같습니다. 2025. 3. 21.
2D 누적 합(Prefix Sum) 기법 이런게 있더라고요. 2D 누적 합은 이차원 배열(행렬)에서 특정 부분 영역의 합을 빠르게 계산해야 할 때 주로 사용됩니다. 언제 사용 할까요?1. 특정 부분 영역의 합을 자주 계산할 때 (O(1)로 최적화) 기본적으로 특정 부분의 합을 구하려면 O(N*M)이 걸리지만, 누적 합 배열을 미리 만들어두면 O(1)로 구할 수 있음.ex) 2D 배열에서 (r1, c1)부터 (r2, c2)까지의 합을 여러 번 구해야 하는 경우 부분 합 = prefix[r2][c2] - prefix[r1-1][c2] - prefix[r2][c1-1] + prefix[r1-1][c1-1] 2. 다차원 배열에서 특정 범위를 여러 번 업데이트해야 할 때 (차이 배열과 함께 사용) 특정 영역을 업데이트하는 연산이 많을 때, 차이 배열(D.. 2025. 3. 21.
Chapter 26. Code-Tuning Techniques (코드 최적화 기법) 속도 향상 & 코드 크기 줄이기 성능 = 속도 + 크기 크기 줄이기 = 코드 최적화보다는 클래스와 데이터의 재설계를 통해 더 많이 이루어짐.코드 최적화 = 대규모 설계 변경보다는 소규모 변경을 의미 이 장에서 다루는 변경은 "안티 리팩토링"= 내부 구조를 개선하는 대신, 성능 향상을 위해 구조를 저하시킵니다. 구조가 저하되지 않는다면 이를 최적화라고 간주하지 않으며, 기본적으로 표준 코딩 관행으로 사용하는 것 26.1 Logic (논리) Stop Testing When You Know the Answer  프로그래밍에서 논리 표현식을 최적화하는 중요한 방법 중 하나는 조건을 알게 되면 테스트를 멈추는 것 예를 들어, 배열에서 음수 값을 찾을 때, 음수 값을 발견하면 더 이상 배열을 계속 스캔하지 않고 즉.. 2025. 3. 9.