https://www.acmicpc.net/problem/16926 16926번: 배열 돌리기 1 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] www.acmicpc.net 문제생각 문제를 딱 봤을 때 생각은 머리가 복잡했습니다. 배열의 인덱스를 조작하는 문제들은 항상 쉽지않았기 때문입니다...ㅎ 우선 배열을 한칸씩 옮겨야 했는데 방향이 총 4방향이라는 점이 저의 머리를 복잡하게 하였습니다. 그리고 안쪽 배열로 들어갈 수록 그 크기가 달라져 어떻게 해야할까 고민이 많았습니다..
https://www.acmicpc.net/problem/2023 2023번: 신기한 소수 수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수 www.acmicpc.net 문제생각 처음에는 소수구하기에서 자주 쓰이고 소수를 구하는데 있어 효율적인 에라토스테네스의 체를 활용하여 코드를 구현하였습니다. 다 구현하고 제출을 했는데 메모리초과가 뜨는 것이였습니다. 알고보니 메모리제한이 4MB이였습니다. 에라토스테네스의 체는 소수를 구하는데 있어 또다른 공간이 필요했기에 적합하지 않은 풀이였던 것이였습니다. (문제를 풀기 전 시간제한과 메모리제한을 잘 봐야겠습니다..
https://www.acmicpc.net/problem/12891 12891번: DNA 비밀번호 평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열을 말한다. 예를 들어 “ACKA” www.acmicpc.net 문제생각 입력받은 문자열을 슬라이싱하고 개수를 세고 조건을 확인하면 풀리는 간단한 문제라고 생각하고 바로 코드로 옮겼습니다. 역시 호락호락한 백준이 아닙니다.ㅎㅎ 바로 시간초과... 생각을 해보니 각 문자열은 한칸씩 다음 칸으로 옮겨지는 것이였습니다. 그럼 이전 부분문자열과 다음 부분문잘은 처음과 끝을 제외하고는 가운데 부분은 동일한 문자열인 것입니다. 그러면 굳이 또 문자..
https://www.acmicpc.net/problem/11660 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 문제생각 앞서 풀었던 구간 합 구하기4랑 비슷하게 해결하면 될거라고 생각했습니다. 그래서 가로 누적합 또는 세로 누적합을 구하고 주어진 구간에 따라 누적합을 더하고 구간이 아닌 부분의 누적합을 빼는 방식으로 다가가려고 하였습니다. 그런데 어디서부터 잘못된건지 시간초과가 어마어마하게 났습니다... 아래의 코드는 시간초과가 난 코드입니다.(이 외에도 시간초과..
https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 문제생각 굉장히 쉽게 생각하였습니다. 입력을 받고 리스트 슬라이싱을해서 sum() 연산만 하면 된다고 생각했고 그런 방식으로 코드를 구성하였습니다. 그런데 시간초과가 발생하였습니다!! 알고보니 리스트 슬라이싱의 시간복잡도가 꽤 높았던 것입니다. 무려 O(k)!!! 여기서 k는 슬라이싱을 해야하는 원소의 개수입니다. 이 슬라이싱 작업을 최대 10만번 해야했고 sum 연산까지 ..
https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 문제생각 제한시간도 충분하고 입력받는 수나 리스트의 크기가 그렇게 크지 않아서 간단한 구현 문제라고 생각하였습니다. (정답비율이 19프로라서 문제 풀기 전에 겁먹었습니다...ㅎ) 남학생의 경우에는 단순히 반복문을 돌려 배수를 찾아 이를 바꿔주기만하면 끝납니다. 여학생의 경우에는 좌우대칭을 확인해야하는데 저는 투 포인터 방식을 사용하여 확인하고 바꿔주었습니다. 여기서 투 포인터 방식이란 두개의..
- Total
- Today
- Yesterday
- 백준#서강근육맨#20300
- 1978
- 오류
- 서블릿#Servlet
- 사탕 게임#백준#3085
- arraylist
- 1316번
- 백준#잃어버린 괄호#1541
- 백준
- 파이썬
- java
- this()
- controller
- querydsl
- MVC
- 덧칠하기
- 게시판#자바#JPA#Entity
- 스프링
- 대충 만든 자판
- HTTP#HTTP특징
- list
- springboot
- Spring
- 7568
- 11659
- 회고
- 프로그래머스
- 자바
- 백엔드#게시판
- 4673번
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |