[C++]BOJ 1041 - 주사위

[C++]BOJ 1041 - 주사위

우선 한 면이 바닥에 가려져 있으므로 총 5n^2만큼의 면을 볼 수 있다.
그 중 3면이 보이는 주사위는 윗쪽 꼭지점 4개, 2면이 보이는 주사위는 눈에 보이는 모서리 8개와 아랫쪽 꼭지점 4개, 1면이 보이는 주사위는 5n^2 - (3 * 3면이 보이는 주사위의 수) - (2 * 2면이 보이는 주사위의 수) 이다.
이를 식으로 나타내면,

3 면 == 4 개
2 면 == 8n - 12 개
1 면 == 5n^2 - 16n + 12 개

로 정리할 수 있다.

Read More
[C++]BOJ 1969 - DNA

[C++]BOJ 1969 - DNA

사전순이기 때문에 A, C, G, T 순으로 세로줄에 등장하는 갯수가 제일 많은 뉴클레오타이드로 배치한다.
Hamming Distance는 세로줄에서 선택된 뉴클레오타이드를 제외하고 나머지 뉴클레오타이드의 등장횟수를 세면 된다.

Read More
[C++]BOJ 1343 - 폴리오미노

[C++]BOJ 1343 - 폴리오미노

보자마자 스택이 떠올랐다.
물론 스택을 사용하지는 않았다.
한 글자씩 받아와서 ‘X’ 4개가 쌓일 때, ‘.’을 만날 때, 모두 읽어서 종료됐을 때의 경우에서 최종 str에 추가해주는 방식으로 풀었다.


‘.’을 만났을 때와 종료됐을 때 종료조건과 2개가 쌓였을 때 “BB”를 str에 추가한다.

Read More
[C++]BOJ 1110 - 더하기 사이클

[C++]BOJ 1110 - 더하기 사이클

읽히는 대로 짜면 된다.
신기한 점은 이 문제의 정답은 1, 3, 4, 12, 20, 60으로 6가지 밖에 없다.
0부터 99까지의 숫자 중에 정답이 1인 숫자가 1개, 3인 숫자가 3개 4인 숫자가 4개, 5인 숫자가 5개, 12인 숫자가 12개, 20인 숫자가 20개, 60인 숫자가 60개다.
각 정답이 같은 숫자끼리 돌아가며 등장한다.

Read More
[C++]BOJ 1202 - 보석 도둑
[C++]BOJ 2352 - 반도체 설계

[C++]BOJ 2352 - 반도체 설계

뭔가 했는데 알고리즘 분류를 보니 LIS라고 한다.

lower_bound로 최장증가수열을 구현하는 방식을 봤는데 실제로 유효한 수열을 구하진 않았다.

그런데 이 문제는 수열을 구하는 게 아니라 수열의 길이만 구하면 되므로 최대한 생략하고 수열의 길이만 구하도록 바꿨다.

Read More
[C++]BOJ 1080 - 행렬

[C++]BOJ 1080 - 행렬

  1. 짝수 번 선택시 원래대로가 되기 때문에 같은 칸을 두 번 이상 선택할 필요가 없다.

  2. 1번 조건을 다르게 생각해보면 선택 순서또한 중요치 않다는 뜻도 된다.

왼쪽 위부터 한자리씩 비교하며 다르면 그 칸을 포함해 오른쪽으로 3, 아래로 3 칸을 바꿔준다.

전체가 같아지면 멈추고 모든 칸을 다 바꿨는데 다르면 -1출력.

Read More
[C++]BOJ 2529 - 부등호

[C++]BOJ 2529 - 부등호

가장 큰 수를 구할 때


  1. 앞자리에 9를 넣고 시작한다.

  2. 다음 부등호가 “<” 라면 부등호 다음 수를 9로 만들고 그전의 자리에는 -1을 해준다.

  3. “>” 라면 사용 안 했던 수 중에 가장 큰 수를 넣는다.
    이런 방식으로 부등호 개수만큼 반복한다.

Read More
[C++]BOJ 1046 - 기타줄

[C++]BOJ 1046 - 기타줄

딴 거 다 필요 없고 가장 싼 패키지와 낱개 가격만 있으면 된다.

그걸 구하기 위해 나는 정렬을 사용한 모양이다. 굳이 그랬어야 할까.

아무튼 경우의 수는 3가지다.

  1. 패키지로 살 수 있을 만큼 산 후 나머지 부족한 것을 낱개로 구입.

  2. 전부 낱개로 구입.

  3. 기타줄 몇 개 남더라도 싹 다 패키지로 구입.

3개 중 가장 작은 게 답이다.

Read More
[C++]BOJ 1946 - 신입 사원

[C++]BOJ 1946 - 신입 사원

문제에 헷갈리는 문장이 있었다.

“다른 모든 지원자와 비교했을 때 서류심사 성적과 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발한다는 원칙을 세웠다.”

???????????

한참을 보다가 다음 줄 보고 이해했다.

“즉, 어떤 지원자 A의 성적이 다른 어떤 지원자 B의 성적에 비해 서류 심사 결과와 면접 성적이 모두 떨어진다면 A는 결코 선발되지 않는다.”

ㅇㅎ


이전에 회의실 배정인가 거기서 썼던 pair를 쓰면 편하겠단 생각이 들었다.

first는 어차피 오름차순으로 정렬되니 다음 사람의 점수보다 무조건 낮을 것이고 그 와중에 second까지 작으면 조건에 의해 걔는 탈락이다.

Read More