일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- BFS
- 슬라이딩 윈도우
- 수학
- 2357
- Python
- 정수론
- 이분 탐색
- 13164
- JavaScript
- 세그먼트 트리
- 플로이드-워셜
- 문자열
- 해시 테이블
- 투 포인터
- 정렬
- 모던 JavaScript 튜토리얼
- 에라토스테네스의 체
- SSAFY
- 싸피
- 구현
- 그리디
- 브루트포스
- 트리
- DP
- boj
- 누적 합
- 맵
- 애드 혹
- DFS
- 그래프
- Today
- Total
목록전체 글 (271)
흙금이네 블로그
아이디어 입력 받은 2차원 배열을 바깥쪽부터 안쪽으로 한 층씩 값을 R만큼 이동하여 새로운 2차원 리스트에 저장한다. 풀이 #1 (Python) 원래 배열을 2차원 리스트 arr에 저장하고, arr과 같은 크기로 0으로 채워진 2차원 리스트 res를 생성한다. N과 M 중 더 작은 값을 2로 나눈 값만큼 for문을 반복하면서 리스트 바깥쪽에서 안쪽으로 접근한다. i, j는 현재 저장할 arr의 숫자 위치를 가리키고, r, c는 원래 위치에서 R만큼 회전하여 res에 저장할 위치를 가리킨다. d1과 d2는 하우상좌 순으로 인덱스 변화 값이 담긴 delta의 인덱스를 저장하는 변수로, 각각 arr과 res의 방향을 나타낸다. R만큼 회전한 위치를 r과 c에 저장하고, 현재 층의 값들을 모두 채울 때까지 wh..
아이디어 n은 문자열 내에서 반복되는 패턴의 반복 횟수를 의미하므로, 입력 받은 문자열에서 반복되는 패턴의 길이를 찾은 후 문자열 길이를 패턴의 길이로 나눈다. 풀이 #1 while문에서 입력 받은 문자열 s가 마침표라면 break로 while문을 탈출한다. s를 두 번 더한 문자열에서 인덱스 0이 아닌 s의 인덱스를 찾고, 문자열 길이를 찾은 인덱스(패턴의 길이)로 나눈다. 11585번 속타는 저녁 메뉴의 풀이 #2와 같은 원리로 동작한다. while 1: s = input() if s == '.': break print(len(s)//(s*2).find(s, 1)) 풀이 #2 바다코끼리 연산자를 이용하면 숏코딩이 가능하다. while문의 조건식에서 s에 입력 값을 할당과 동시에 반환하면서 마침표가 아..
아이디어 2차원 리스트를 이용해 바깥쪽부터 안쪽으로 빈 공간에 숫자를 채워 나간다. 풀이 #1 (Python) 방향에 따라 행열 인덱스 변화 값 튜플을 반시계 방향인 하우상좌 순으로 리스트 delta에 저장한다. 함수 fill에서는 0으로 채워진 N*N 2차원 리스트 table를 만들고, N*N부터 1까지의 숫자를 (0, 0)부터 채워 나간다. 현재 숫자를 문자열로 인덱스에 맞게 리스트 table에 저장하고, 현재 숫자가 M이면 pos에 현재 좌표를 문자열로 저장한다. 다음 인덱스가 범위를 벗어나거나 해당 위치에 이미 값이 채워져 있으면 d를 증가시켜 방향을 전환한다. 값이 모두 채워진 리스트 table을 한 줄씩 공백으로 join하여 출력하고, 마지막 줄에 pos를 출력한다. delta = [(1, 0..