전체 글 143

[백준] 11653. 소인수분해

11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 원리는 N을 나누어 떨어지게 하는 수가 소수인지 여부를 판별하고, 소수이면 해당 수를 출력한 뒤, N에는 해당 소수로 나눈 몫을 저장해 N이 1이 될 때까지 반복문을 돌리며 나누는 소수를 출력하도록 했다. 하지만 내 생각보다 시간이 많이 걸렸다. 제곱근을 안쓰고 2부터 num까지 수로 모두 num을 나눠서 소수를 판별했기 때문일 것이다. # 11653 소인수분해 (2192ms) N = int(input()) cnt = 0 while N > 1: for num in range(2, N+1): flag = False if N % num == 0: for z in range(2, num)..

[백준] 2581. 소수

2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 이것도 2부터 num까지 num을 나누어 소수인지 여부를 판별했다(매우 비효율적인 방법이다. 테스트케이스가 많은 예시일 때 시간초과 나기 쉽다.) 소수의 합과 소수 중 최솟값은 파이썬 내장함수(sum()함수, min()함수)를 이용했다. 시간은 588ms, 메모리는 30840KB가 나왔다. # 2581 소수 M = int(input()) N = int(input()) arr = [] for num in range(M, N+1): flag = False if num == 1..

[백준] 1978. 소수 찾기

1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net flag를 사용해서 주어진 숫자들이 소수인지 여부를 확인하면 되는 문제였다. 테스트케이스가 많지 않아서 그냥 2부터 a까지 모든 숫자들로 다 나눠보아도 시간이 그렇게 많이 들지 않았다. (하지만 뒤로 갈수록 테스트 케이스가 많아져서 이 방법대로 풀 수는 없었다. 그래서 제곱근이나 에라토스테네스의 체를 찾아보고 적용해야만 했다.) # 1978 소수 찾기 N = int(input()) arr = list(map(int, input().split())) cnt = 0 for a in arr: flag = False if a == 1: ..

[백준] 2775. 부녀회장이 될테야

2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 이 문제는 n과 k가 1부터 14 사이의 작은 수여서 O(n2)의 시간복잡도가 나오더라도 이중 반복문을 사용해 풀었다. # 2775 부녀회장이 될테야 T = int(input()) for tc in range(1, T+1): k = int(input()) n = int(input()) house = [[0 for _ in range(n+1)] for z in range(k+1)] # 0층의 room들은 1, 2, 3 순으로 사람이 들어가 있다. for r in range(n+1): house[0][r]..

[백준] 10250. ACM 호텔

10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 이 문제는 쉽게 접근해서 풀었지만, 중간에 미처 찾지 못한 반례때문에 계속 틀리다가 반례를 알아내서 맞춘 문제이다. 처음에는 이렇게 flag 없이 풀었다. # 10250 ACM호텔 T = int(input()) for tc in range(1, T+1): H, W, N = map(int, input().split()) cnt = 1 for w in range(1, W+1): for h in range(1, H+1): if cnt == N: print(..

DDP 팀 버튼 특별전

친구와 함께 팀 버튼 특별전을 3주 전 쯤에 보고 왔다. 내부에 있는 작품들은 촬영이 안되서 찍진 못했으나(ㅠㅠ), 팀 버튼의 옛날 스케치부터 영상 작업물까지 많은 것들이 모여있어서 전시를 보고 나면 '아, 팀 버튼은 이런 작업을 하는 사람이구나.'라는 것이 느껴지는 정도였다. 팀 버튼의 감성은 굉장히 독특하다. 기괴하고 공포스럽지만, 어린 아이같은 순수함과 귀여움이 묻어져 있다. 가령 이제껏 팀 버튼이 만든 작품의 주인공(굴 소년, 스테인 보이, 유령신부..)들은 다들 기괴하게 생겼지만, 마음씨가 못돼먹은 악당은 거의 없었다. 오히려 이해받지 못해서 우울감에 빠져든 모습을 보인다. 어쩌면 그것은 팀 버튼 본인을 투영한 것이 아닐까? 하는 생각을 했다. 실제로 그는 디즈니에서 일하면서도, 많은 작업들이 ..

TO GO/EXHIBITION 2022.07.25

우연히 웨스 엔더슨 전(ACCIDENTALLY WES ANDERSON, AWA)

성수동 그라운드 시소에서 열린 '우연히 웨스 엔더슨' 전시 마지막 날, 정처기 시험 끝내고 갔다..! 우연히 웨스 엔더슨은 윌리와 아만다 코발 부부가 만든 여행사진 커뮤니티이다. (인스타그램: @accidentallywesanderson) 부부는 여행을 다니며 웨스 엔더슨의 영화에 나올 법한 대칭, 아기자기한 색감이 드러나는 여행 사진을 찍어 올렸고, 자신들과 비슷한 스타일을 추구하는 모험가들로부터 사진을 받아 게시하기도 했다. 그렇게 많은 웨스 앤더슨 스타일의 여행 사진들이 모여 전시를 하게 된 것이다. 세계 여러 나라의 멋진 포토 스팟을 감상할 수 있었고, 같은 광경을 보더라도 이렇게 사진에 담아낼 수 있구나를 느낄 수 있었던 시간이었다. 개인적으로 인상적이었던 것은 중동 지역. 희거나 붉은 모래와 ..

TO GO/EXHIBITION 2022.07.25

[백준] 1193. 분수찾기

1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 이 문제는 처음에 dfs로 방향 이동하는 걸로 풀었다가 시간 초과가 나서 인터넷으로 더 간단한 풀이방법을 검색해서 다시 풀었다. 우선 아래가 내가 처음에 dfs 활용해서 푼 버전. 정답은 잘 나왔는데, 재귀를 사용하는 이상 어떻게 해도 시간 초과가 나올 수밖에 없는 구조였다. return을 조건문과 반복문 중간중간에 넣어 빠르게 빠져나오게 해도 어쩔 수 없었다. # 1193 분수 찾기 def find_num(y, x, cnt, str): dy = [1, -1] dx = [-1, 1] if cnt == N: print(arr[y][x], end='') return # case [0] 좌하향 # ..

[백준] 2292. 벌집

2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 이 문제는 총 3번 시도했다. 1차 시도는 재귀함수로 풀었다가, RecursionError가 났고 2차 시도는 시간오류라고 표시됐는데, 다시 뜯어보니 아예 잘못 짠 거였다. 그렇게 3차 시도에서 통과했다. 우선, 1차 시도는 이렇게 재귀 함수로 짜보았다. 예시 입출력은 통과했는데, Recursion Error가 나버렸다. # 2292 벌집 # 규칙성을 따져보면 벌집의 숫자는 6의 배수로 늘어난다. # 가령 1은 6의 0제곱, 1을 둘러싼 원은 2-7(6개), 그 다음 원..