Baekjoon

    [백준 9506] 약수 합 - 파이썬

    백준 9506번 문제는 약수들의 합을 구해 완전수 (perfect number)인지 아닌지를 판별하는 문제입니다. 저는 다음과 같이 풀었습니다. while 문으로 exit (-1)전까지 입력을 받습니다. 1부터 n까지 for문을 돌면서, 나머지가 없는 즉, 모든 약수 (factor)를 리스트에 기록합니다. 약수의 합이 입력 값(n)과 같은지 확인하고 맞다면 형식에 맞춰 출력을 진행 if __name__ == '__main__': while True: n = int(input()) result = [] if n == -1: break else: for i in range(1, n): if n % i == 0: result.append(i) if n == sum(result): result = list(ma..

    [백준 11005] 진법 변환 2 - 파이썬

    백준 11005번은 '주어진 10진법 수 N을 사용자가 지정한 진법 B로 변환하는 알고리즘'을 만드는 문제입니다. 원리만 이해하면 생각보다 간단하게 풀 수 있습니다. 간단한 예시를 통해 이해하고 답을 보겠습니다. 예시 10진수 10을 2진수로 변환하는 경우: N = 10, B = 2 10진수 -> B진법 변환은 나머지를 기록해둘 필요가 있습니다. 또한 10진수 값 N 을 B로 나눴을 때 몫을 기억해둘 필요가 있습니다. 지속적으로 업데이트 해주어야 합니다. 10 % 2 = 0 --> 나머지 = "0" N // B : 10 // 2 = 5 --> 몫 = "5" N = 5 (i.e. N = N // B) 5 % 2 = 1 --> 나머지 = "1" N // B: 5 // 2 = 2 --> 몫 = "2" 2 % ..

    [백준 2563번] 색종이 - 파이썬

    백준 2d array 부분 색종이 알고리즘에 대해 풀어보겠습니다. (https://www.acmicpc.net/problem/2563) 처음 이 문제를 접했을 때 들었던 생각은 각 색종이 area를 구하여 더함 교집합 영역을 구함 하나의 교집합 영역만 전체 area에 남겨두고, 나머지는 뺌 그런데 이렇게 처리하면 예외 케이스가 많이 생겨 너무 복잡도가 증가한다는 단점이 있었습니다. 단순하게 생각해보면, A라는 100 x 100 매트릭스가 있다고 가정했을때, 겹치든 겹치지지 않든, 색종이가 영역을 덮고 있다면 A[i][j] 의 값을 1로 설정하고 그렇지 않다면 0으로 설정하면 불필요한 예외 처리 없이 문제를 해결 할 수 있습니다. 정답 코드는 다음과 같습니다. if __name__ == '__main__..

    [백준 10798번] 세로 읽기 파이썬

    백준 단계별로 문제를 풀기 시작하다보면, 2d-array에 관한 문제가 나옵니다. 단계별로 올라갈수록 맛보기 수준의 문제에서 난이도가 올라가는 것을 체감할 수 있습니다. 오늘은 10798번 문제에 대해 어떻게 풀었는지 공유해보겠습니다. (https://www.acmicpc.net/problem/10798) 다음 문제에서 챌린지는 matrix를 가로방향이 아닌 세로방향으로 읽어야함 각 행(단어)별로 0~15까지 가변 길이를 갖고 있음 문제는 두번째 포인트인데, 어떻게 예외를 처리할까 고민하게 될 수 있습니다. 답은 생각보다 간단합니다. if __name__ == '__main__': words = [input() for i in range(5)] for j in range(15): for i in rang..