[백준 / JAVA] 21608. 상어 초등학교 (G5) https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호www.acmicpc.net 사방탐색으로 풀리는 간단한 문제다. 이런 문제를 풀 땐 공책 같은 곳에 내가 구현하고자 하는 것을 적으면서 풀자. 그렇지 않으면... import java.util.*;import java.io.*;public class Main { static BufferedReader br; static StringTokenizer st; static StringBuilder sb; public st.. [백준 / JAVA] 20055. 컨베이어 벨트 위의 로봇 (G5) https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부www.acmicpc.net 구현은 쉬운데 국어가 어려워서 코드의 해설이 아닌 지문의 해설을 보고 겨우 풀었다. 지문을 나름대로 풀어 쓰자면 □ 단계 시작- 벨트가 1칸 회전한 후 N번 칸(0부터 시작하면 N-1)의 로봇을 내린다.(내릴 때는 내구도 소모 X)- 벨트 위의 로봇들이 앞 칸으로 전진할 수 있을 경우(앞 칸에 로봇이 없고 내구도가 있을 때) 전진한다.(문제에서 이 부분을 너무 개떡같이 적어놨다고.. [백준 / JAVA] 3190. 뱀 (G4) https://www.acmicpc.net/problem/3190 3190번: 뱀'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임www.acmicpc.net 스네이크 게임을 직접 구현해 본 입장으로서 쉬울 줄 알았지만 매우 오래 삽질을 하였다. 두 가지 헤맨 포인트가 있는데 첫 번째 포인트는 뱀의 방향 전환 정보 X와 C에서 X가 게임 전체 시간이다. 예를 들어 8D, 10D 라면 8초 진행한 후 꺾고 2초 후 다시 꺾는다.(나는 8초 후, 10초 후라고 생각함) 두 번째 포인트는 보통의 뱀 게임과 달리 여기서는 머리가 먼저 움직인다! 무슨 뜻이냐면 내가 이동으.. [백준 / JAVA] 16935. 배열 돌리기 3 (G5) 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 얘는 순수 구현이 맞다... 팁이 하나 있다면 몇몇 기능은 이전에 만든 기능들의 조합으로 구현할 수 있다. 하지만 속도가 느려질 것 같은 느낌이 들어 나는 바꾸진 않았다. import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.InputStrea.. [백준 / JAVA] 16927. 배열 돌리기 2 (G5) https://www.acmicpc.net/problem/16927 16927번: 배열 돌리기 2크기가 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만 해당한다. 배열 돌리기 1의 회전수는 1000이지만 2의 회전수는 10억이기에 1을 순수 구현 하고(입력이 1000이면 1000번 움직이도록) 2에 넣으면 시간초과가 필연적이다. 문제를 해결해보자. 1. 일단 배열을 한 줄씩 돌리는데 내가 사용한 .. [백준 / JAVA] 1107. 리모컨 (G5) https://www.acmicpc.net/problem/1107 1107번: 리모컨첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼이www.acmicpc.net (절대 이 문제를 구현하려 하지마...)이 문제를 본 프로그래머들은 다들 구현으로 풀다가 좌절한다. (아니면 골드가 아님) 이 문제를 구현하려면 고려해야 하는 상황이 참 많은데 내가 파악한 것만 나열하면 (N은 목표로 하는 수) 1. N이 K자리 수일때 K+1 자리 수 중 만들 수 있는 가장 작은 수2. N이 K자리 수일때 K-1 자리 수 중 만들 수 있는 가장 큰 수3. N의 첫 .. [C#, JAVA] n이하의 소수 리스트 소수는 알고리즘 문제의 단골 손님인데, 보통 시간 초과에 막히는 문제가 많다. 따라서 소수 판별 시간을 줄이는 것이 일순위인데 아래 코드에선 소수의 두 가지 성질을 이용했다. 1. 어떤 수를 그 수의 제곱근보다 작은 소수들로 나눴을 때 나누어 떨어지지 않는다면 그 수는 소수이다. 2. 2를 제외한 모든 짝수는 소수가 아니다. 더 빠른 방법을 찾을 시 수정 using System; using System.Collections.Generic; class Program //사용 예 { static void Main(string[] args) { Prime p = new Prime(); p.makePrime(100); List list = p.getList; foreach (long l in list) Cons.. [C#] 세그먼트 트리 코딩을 할 때 시간을 단축하기 위해 메소드를 호출해서 사용하듯이 비슷한 문제를 풀 때마다 같은 알고리즘을 짜는 건 시간낭비이다. 따라서 알고리즘 도장을 파서 적재적소에 활용하고자 한다. 세그먼트 트리는 단말 노드에 값들이 저장되고 그 부모노드엔 단말 노드의 값들을 조합한 결과가 저장되는 트리이다. 예를 들어 노드의 합을 저장하는 세그먼트 트리라면, 단말 노드의 일부가 1 / 2 || 3 / 4라면 부모 노드엔 3 / 7이 저장되고 그 부모 노드엔 10이 저장된다. 그리고 뿌리 노드엔 모든 단말 노드의 합이 저장된다. 따라서 어떤 데이터들이 주어질 때, 세그먼트 트리를 만들면 데이터의 특정 구간의 연산(합, 곱, 최대, 최소 등)이 가능하다. 노드의 합 세그먼트 트리: update는 해당 값을 완전히 바꾸.. 이전 1 2 3 4 5 다음