/images/logo.png

[백준]1102 발전소

https://www.acmicpc.net/problem/1102 풀이: 발전소의 현재 상태를 2진수로 표현한다. ex) YNN -> 100 l : 발전소의 현재 상태를 2진수로 표현한 값 z : 발전소가 현재 켜져있는 갯수 z가 p보다 크거나 같아진다면 반복을 종료한다. d[x] : x상태인 발전소를 만드는데 필요한 비용 d[x] = min(d[x], B(x | (1«y), z + 1) + a[u][y]) 현재 발전소의 상태에서 안켜진 부분을 키되, 가장 적은 비용으로 킨 후 z를 + 1 한다. p값이 0이라면 발전소를 킬 필요가 없으므로 0을 출력

[백준]1194 달이 차오른다, 가자

https://www.acmicpc.net/problem/1194 풀이: b[x][y][key] : key를 들고, (x, y) 방문했다면, 1, 방문하지 않았다면 0 0부터 BFS를 시작한다. 오른쪽, 왼쪽, 위, 아래를 갈 수 있는데, 만약 갈 수 있는곳이 빈 곳(' . ‘) 이고, 방문하지 않았다면, 방문하고, 방문표시를 한다. 만약 갈 수 있는 곳이 문(대문자) 이고, 방문하지 않았다면, 현재 key가 있는지 확인하고, key가 있다면 방문하고, 방문표시를 한다. 만약 갈 수 있는 곳이 열쇠(소문자) 라면, 얻은 열쇠를 key값에 적용시켜준다. 출구(‘1’) 를 만난다면 반복을 중단한다.

[백준]1525 퍼즐

https://www.acmicpc.net/problem/1525 풀이: 0 1 2 3 4 5 6 7 8 이렇게 퍼즐이 배열되어 있다고 가정하자. 우리는 이것을 012345678 -> int형으로 바꿔 생각하도록 하자. 이 때, 0이 맨 앞에 나올 경우 무시되므로 0 -> 9 로 바꿔서 912345678 로 나타내도록 하자. 우리가 찾아야 하는 퍼즐의 상태는 123456789 이다. 주어진 퍼즐에서 9를 오른쪽, 왼쪽, 위, 아래 로 옮기면서, 123456789가 되는 지점 까지 BFS를 돌린다.

[백준]1254 팰린드롬 만들기

https://www.acmicpc.net/problem/1254 풀이: 기준점 i를 잡는다. (초기 i값은 문자열 S의 중간 지점) 기준점 i와 i - 1을 기준으로 짝수 팰린드롬을 만들 수 있는지 확인한다. 만들 수 없다면, 기준점 i를 기준으로 홀수 팰린드롬을 만들 수 있는지 확인한다. 만들 수 없다면, 기준점 i를 +1 해준다. 짝수 팰린드롬을 만들 수 있다면, 2 * ( i - 1 ) 을 출력한다. 홀수 팰린드롬을 만들 수 있다면, 2 * i - 1 을 출력한다. 코드: 사용언어 : c++

[백준]1213 팰린드롬 만들기

https://www.acmicpc.net/problem/1213 풀이: 주어진 문자열에서 알파벳이 각각 몇개 들어있는지 저장한다. A~Z 까지 갯수를 확인한 후 앞뒤로 하나씩 넣는다. 홀수개인 알파벳이 2개 이상 이라면, 문자열을 만들 수 없으므로 “I’m Sorry Hansoo"를 출력한다. 문자열의 길이가 홀수라면, 가운데에 1개남은 글자를 넣어준다. 코드: 사용언어 : c++ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <iostream>using namespace std; int i, c = -1, f, t, b[26]; string s; int main() { cin >> s; for (; i < s.

[백준]1334 다음 팰린드롬 수

https://www.acmicpc.net/problem/1334 풀이: 문자열 S를 받아온다. S의 길이를 N이라고 하자. S의 오른쪽 절반의 값을 왼쪽 절반의 값으로 덮어쓰자. 그렇게 만들어진 문자열을 A라고 하자. A는 이미 펠린드롬 수 인데, 이 수가 S보다 크다면 A를 그대로 출력한다. 만약 S보다 작다면, 가운데 수를 1씩 증가시킨다. 가운데 수가 9가 됐다면, 0으로 바꾸고 오른쪽, 왼쪽 수를 1씩 증가시킨다. 더 커질 때까지 반복한 후 A를 출력한다. 만약 S가 9로만 이루어진 수라면, 맨 앞수를 1로 바꾸고 그 것을 제외한 모든수를 0으로 바꾼 후 1을 추가한 후 출력한다.