색각 보정
- 시간 제한
- 1s
- 메모리 제한
- 512MB
- 제출
- 59
- 정답
- 30
- 맞힌 사람
- 26
- 정답 비율
- 54.2%
문제
현대 운영체제의 윈도우 매니저와 그래픽스 파이프라인은 다양한 유형의 색각 이상을 가진 사용자를 위해 화면의 각 픽셀 색상을 실시간으로 보정하는 셰이더 필터를 제공한다.
그래픽스 파이프라인은 3차원 장면을 화면에 표시할 수 있는 2차원 이미지로 변환하는 일련의 과정이다. 이 과정은 여러 단계로 구성되며, 일부 단계에서는 셰이더를 사용해 픽셀의 색상을 계산하거나 다양한 시각적 효과를 표현한다. 예를 들어, 셰이더로 각 픽셀의 색상을 실시간으로 조정하는 필터를 구현해 색각 이상이 있는 사용자가 화면의 색을 더 쉽게 구별하도록 도울 수 있다.
컴퓨터 화면의 단일 픽셀은 이상 이하의 정수로 구성된 세 가지 색상 성분 로 표현된다. 화면 전체의 색상 그러데이션 경계선이 왜곡되는 현상을 방지하기 위해, 시스템은 특정 색을 임의로 치환하는 대신 각 픽셀 벡터에 선형 변환 행렬을 곱하여 연속적인 색 공간 투영 연산을 수행한다.
당신은 그래픽스 파이프라인의 색각 보정 모듈을 구현해야 한다. 적용할 필터 모드 문자열 과 원본 색상 가 주어졌을 때, 아래의 변환 수식을 적용하여 변환한 픽셀의 세 성분 를 출력해보자.
GRAY: (표준 흑백 모드 - ITU-R BT.601) 인간 시각의 녹색 민감도를 반영한 명도 가중합 를 계산하여 모든 채널에 적용한다.
PROTAN: (제1색각이상 / 적색약 보정 모드) 적색 원추세포의 손실 정보를 녹색 및 파랑 축으로 재분배한다.
DEUTER: (제2색각이상 / 녹색약 보정 모드) 녹색 원추세포의 손실 정보를 적색 및 파랑 축으로 재분배한다.
계산한 각 성분은 가장 가까운 정수로 반올림한다. 정확히 두 정수의 중간인 값은 더 큰 정수로 반올림한다. 예를 들어 는 이 된다.
필터 모드와 픽셀의 세 성분이 주어질 때, 변환한 픽셀의 세 성분을 구하여라.
입력
첫째 줄에 필터 모드 이 주어진다. 은 GRAY, PROTAN, DEUTER 중 하나이다.
둘째 줄에 세 정수 , , 가 공백으로 구분되어 주어진다.
출력
변환한 픽셀의 세 성분 , , 를 반올림한 정수를 공백으로 구분하여 출력한다.
예제 1
GRAY
100 150 200
출력 1
141 141 141
예제 2
PROTAN
200 100 50
출력 2
157 156 62
예제 3
DEUTER
100 200 50
출력 3
138 130 95
힌트
첫 번째 예제에서 이므로 세 성분은 모두 이 된다.
두 번째 예제에서 변환 전의 세 성분에 PROTAN의 식을 적용하면 을 얻고, 이를 반올림하면 가 된다.
세 번째 예제에서 변환 전의 세 성분에 DEUTER의 식을 적용하면 를 얻고, 이를 반올림하면 가 된다.
- 문제를 만든 사람
- 안우진
- 알고리즘 분류
코드를 제출하려면 로그인이 필요합니다.
로그인제출 내역이 없습니다.
| # | 순위 | 사용자 | 언어 | 시간 | 메모리 | 코드 길이 | |
|---|---|---|---|---|---|---|---|
| 10467 | 🥇 | 멋진승주 | C++ | 1ms | 1620KB | 848B | |
| 10459 | 🥈 | 상받고싶습니다 | C++ | 1ms | 1620KB | 748B | |
| 10266 | 🥉 | 황현석 | C++ | 1ms | 1620KB | 399B | |
| 10488 | 4 | 실외기선풍기세탁기 | C++ | 1ms | 1620KB | 852B | |
| 10458 | 5 | 세얼간이 | C++ | 1ms | 1620KB | 615B | |
| 10485 | 6 | 안녕하세요케이터링먹으러왔습니다감사합니다 | C++ | 1ms | 1620KB | 825B | |
| 11009 | 7 | 이재준 | C++ | 1ms | 1620KB | 844B | |
| 10489 | 8 | SW-IT Contest는 충남대학교 컴퓨터인공지능학부 알고리즘 동아리 ANA에서 주최하는 프로그래밍 대회로, 팀으로 출전하여 알고리즘 문제를 해결하는 대회입니다. | C++ | 1ms | 1620KB | 942B | |
| 10471 | 9 | OOOOOOOO | C++ | 1ms | 1664KB | 737B | |
| 10465 | 10 | Kokiri is cute | C++ | 1ms | 1768KB | 692B | |
| 10560 | 11 | Team 경덩이 | Python | 9ms | 9128KB | 451B | |
| 10814 | 12 | 메가커피 | Python | 9ms | 9212KB | 880B | |
| 10573 | 13 | 이채환여친구함 | Python | 9ms | 9220KB | 460B | |
| 10577 | 14 | 25번지 실버타운 | Python | 9ms | 9392KB | 575B | |
| 10626 | 15 | 나여 | Python | 10ms | 9020KB | 536B | |
| 10710 | 16 | 집가고싶다 | Python | 10ms | 9212KB | 627B | |
| 10704 | 17 | 요를레이히말고영크크 | Python | 12ms | 9208KB | 568B | |
| 10694 | 18 | 1+1+1=1 | PyPy | 23ms | 49984KB | 520B | |
| 10515 | 19 | 황준영 | PyPy | 24ms | 49996KB | 747B | |
| 10642 | 20 | 3학년인내가코딩을잘할수있을리없잖아무리무리!(※무리가 아니었다?!) | Java | 25ms | 37888KB | 1721B |
| # | 사용자 | 문제 | 결과 | 언어 | 시간 | 메모리 | 코드 길이 | 제출 시간 | |
|---|---|---|---|---|---|---|---|---|---|
| 11037 | 맞았습니다 | Java | 248ms | 41544KB | 1082B | 2026. 10. 11. 13:30 | |||
| 11009 | 맞았습니다 | C++ | 1ms | 1620KB | 844B | 2026. 10. 07. 16:30 | |||
| 11008 | 틀렸습니다 | C++ | - | - | 844B | 2026. 10. 07. 16:19 | |||
| 11007 | 틀렸습니다 | C++ | - | - | 797B | 2026. 10. 07. 16:16 | |||
| 11006 | 틀렸습니다 | C++ | - | - | 833B | 2026. 10. 07. 15:43 | |||
| 11005 | 틀렸습니다 | C++ | - | - | 807B | 2026. 10. 07. 15:35 |