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 1. 접근 방식 deque()를 사용해서 배열을 line으로 접근하자. 위 그림처럼 배열을 line으로 접근한다. 사각형 한 줄이 하나의 line인 것이다. line을 만들기 위해서는 인덱스 처리를 통해 for문으로 배열을 색깔별로 접근하면 된다. 하나의 라인을 만들기 위해 4개의 방향으로 접근한다. 각..
https://www.acmicpc.net/problem/16935 16935번: 배열 돌리기 3 크기가 N×M인 배열이 있을 때, 배열에 연산을 R번 적용하려고 한다. 연산은 총 6가지가 있다. 1번 연산은 배열을 상하 반전시키는 연산이다. 1 6 2 9 8 4 → 4 2 9 3 1 8 7 2 6 9 8 2 → 9 2 3 6 1 5 1 8 3 4 2 9 → www.acmicpc.net 1. 접근 방식 각 연산을 처리하는 함수를 구현하자. 각 함수는 인자로 기존 배열을 받고, 연산을 적용한 결과(배열)을 반환한다. 함수 내부에서 일어나는 일이 외부에 영향을 끼치고 싶지 않았기 때문에 이와 같이 배열을 인자로 받고, 새 배열을 반환하는 방식으로 구현하고자 한다. 인덱싱과 리스트 comprehension을 ..
https://www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 1. 접근 방식 이동할 때의 핵심은 「격자의 행과 열은 1번부터 N번까지 번호가 매겨져 있고, 1번 행은 N번과 연결되어 있고, 1번 열은 N번 열과 연결되어 있다.」이다. 예를 들어 파이어볼로 (4, 1, 2, 5, 7)을 입력 받았다면, 실제 테이블의 3행 0열에 해당 파이어볼이 존재하는 것이다. 속도 5, 방향 7.즉, 좌측 상향 대각선으로 5칸 이동해..
https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 1. 접근 방식 무언가를 자르고, 최대값을 구하는 문제이므로 이진 탐색으로 접근하자. 실제로 그냥 반복문으로 값을 하나씩 줄이거나 늘리는 방식으로 코드를 작성하면 시간 초과가 난다. 빠르게 최대값을 탐색하기 위해 이진 탐색을 해야 한다. 이진 탐색을 위한 시작 값과 끝 값을 설정하자. 끝 값은 당연히 입력 받은 나무 길이 중 가장 긴 나무 길이로 설정한다. ..
내용 구성 싱글톤 패턴이란? 코드로 보는 싱글톤 패턴 멀티 스레드 환경에서의 문제점 안전하게 사용하는 싱글톤 패턴 참고 객체지향 디자인 패턴1 (알퍅한 코딩 사전, 객체지향 디자인패턴 1 - YouTube) [JAVA] 싱글톤 패턴 2부 - 멀티쓰레드 환경에서 안전하게 구현하기 (luminous13, [JAVA] 싱글톤 패턴 2부 - 멀티쓰레드 환경에서 안전하게 구현하기 (tistory.com)) 「면접을 위한 CS 전공지식 노트」 (주홍철 지음) 1. 싱글톤 패턴이란? 길동이는 로그인 기능이 있는 작은 홈페이지를 만들고 테스트를 하고 있다. 인덱스 페이지에서 다크 모드를 설정해본다. 정상적으로 검은색 배경으로 전환되었다. 그러나 로그인 페이지로 이동하니 홈페이지 배경이 밝은 하얀색이다! 다시 접속해본 ..