1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 해설 평이한 수준의 시뮬레이션, 구현 문제였다. 남자랑 여자로 스위치 변경 타입을 나눠주고 각 메소드를 분리해서 만들어줬다. 이번에는 메소드를 분리해서 만들었지만 나머지 연산을 사용한다면 굳이 change 메소드까지 만들 필요는 없었다고 생각한다. 구현 문제이니만큼 직관적인 편이었지만 추후 더욱 어려운 구현(시뮬레이션) 문제를 풀기에 앞서서 풀어보기에는 괜찮은 문제라는 생각이 들었다. 메소드를 분리해서 만들면 코드가 길어질 경우에 중복되는 코드를 줄이기 쉽..
12891번: DNA 비밀번호 평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열을 말한다. 예를 들어 “ACKA” www.acmicpc.net 해설 처음에는 나이브하게 모든 부분문자열로 잘라서 풀이해보려고 했지만 그렇게 하니까 시간초과가 났다. 그래서 생각해본 방식으로는 각 ACTG를 0, 1, 2, 3의 인덱스값을 표현하는 int값으로 바꿔준 다음에 그 int값을 arr 배열에 넣었다. 그리고 cur 배열에서 앞쪽 유전자(알파벳)에 해당하는 인덱스값을 낮춰주고, 뒤쪽 유전자(알파벳)에 해당하는 인덱스값을 높여주면서 한 계단씩 올라가면서 비교를 진행해서 통과하게 되었다. 예를 들어..
15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 해설 간단하게 순열을 구현해보는 문제였다. 기본 배열인 arr에 1~N을 넣어준 다음에 순열을 통해 순서가 있게 선택을 하고 N만큼의 선택을 진행했다면, 해당 순열을 static StringBuilder sb에 넣어줌으로써 저장한 다음에 마지막에 한꺼번에 출력해줌으로써 출력시간을 최소화할 수 있도록 만들었다. 기본 순열을 구현하는 좋은 문제이므로 자주 들여다보면서 순열을 구현하는 감을 익히면 좋을 것 같다. 풀이 import java.io.BufferedRead..
2023번: 신기한 소수 수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수 www.acmicpc.net 해설 메모장에 써보면서 실험해본 결과, 맨 앞자리엔 2, 3, 5, 7이 올 수 있고, 그 이후에는 1, 2, 3, 5, 7이 올 수 있다는 사실을 알 수 있었다. 숫자 크기상 에라스토테네스의 체를 쓰기에는 어려움이 있었고, 간단하게 제곱수까지만 반복문을 통해 소수임을 판별할 수 있게 만들었다. check에는 문자열 s와 몇째자리 수까지 받았음을 나타내는 num을 파라미터로 받아서 소수임이 판별나면 check 메소드를 재귀로 돌렸고, num이 N과 같..
2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 해설 상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정확하게 N킬로그램을 만들 수 없다면 -1을 출력해야한다. 초기값으로 dp[3]과 dp[5]를 1로 하고, dp[n-3]+1과 dp[n-5]+1의 최솟값을 잡는 dp로 풀었다. 만약 20000보다 큰게 나오면 딱 맞게 담을 수 없다는 의미이므로 -1을 반환한다. 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr..
2961번: 도영이가 만든 맛있는 음식 첫째 줄에 재료의 개수 N(1 ≤ N ≤ 10)이 주어진다. 다음 N개 줄에는 그 재료의 신맛과 쓴맛이 공백으로 구분되어 주어진다. 모든 재료를 사용해서 요리를 만들었을 때, 그 요리의 신맛과 쓴맛은 www.acmicpc.net 해설 방문배열 boolean v[] 를 이용하여 방문체크를 하고, 해당 재료를 선택했을 때와 선택하지 않았을 경우의 신맛과 쓴맛의 차이를 생각해 보면서 차의 최댓값을 구할 수 있도록 하였다. 풀이(java) package com.ssafy.recursive; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import jav..