너무 기본적인 개념 질문드려서 죄송합니다.. ㅠㅠ
안녕하세요 선생님 🙂
플로이드 와샬 개념문제로 11404번 문제를 풀다가 갑자기 삼항연산자의 개념이 헷갈려졌습니다 ㅠㅠ 구글링해도 기본적인 설명만 있고, 교안도 삼항 연산자 관련 내용이 없어서 질문 드립니다..
http://boj.kr/eefe3db0d7aa4338bfffb83a6233db67
// 입력 부분
dist[a][b] = INF ? min(dist[a][b], c) : c;
// 출력 부분
else cout << (dist[i][j] == INF ? 0 : dist[i][j]) << " ";
입력 부분에 ==가 아닌 =가 들어가는 이유를 모르겠습니다. 또, = 대신 ==를 넣으면 안되는 이유를 모르겠습니다.
제가 아는 삼항 연산자는
if (dist[i][j] == INF) 라는 조건을 만족하면 dist[i][j]가 왼쪽이 되고, 만족하지 않으면 dist[i][j]가 오른쪽이 되는 것을 한 줄로 요약한 코드라고 알고 있습니다.
개념이 심하게 헷갈리네요 ㅠㅠ 알려주시면 감사하겠습니다..!!
답변 1
1
안녕하세요 유태님 ㅎㅎ
입력 부분에 ==가 아닌 =가 들어가는 이유를 모르겠습니다. 또, = 대신 ==를 넣으면 안되는 이유를 모르겠습니다.
-> 배열에 값을 할당하기 위해 = 이 들어갑니다. ==은 비교할 때만 쓴다고 생각하시면 됩니다.
입력 부분: dist[a][b] = INF ? min(dist[a][b], c) : c;
-> dist[a][b]가 INF 라면 dist[a][b]와 c 중 작은 값을 선택하여 dist[a][b]에 할당합니다. 그게 아니라면 c를 할당합니다.
출력 부분: else cout << (dist[i][j] == INF ? 0 : dist[i][j]) << " ";
-> 이 코드는 결과를 출력하는 부분입니다. dist[i][j] == INF라는 조건을 확인하여, 두 노드 i와 j 사이에 경로가 없는 경우 0을 출력합니다. (경로가 없는 경우, INF 대신에 의미 있는 값으로 0을 출력하는 것입니다.) dist[i][j] != INF인 경우는, dist[i][j] 값 그대로를 출력합니다. 즉, 경로가 있으면 그 경로의 거리를 출력합니다.
감사합니다.
코딩 살구클럽 가입 문의
0
61
2
코딩살구클럽 가입문의
0
69
2
3-K private case 질문
0
63
2
안녕하세요. 코딩살구클럽 문의드립니다!
0
76
2
7:41 듣다가 질문합니다
0
73
2
코드 리뷰 요청드립니다!
0
79
2
코딩살구클럽 계정 문의
0
76
2
SK하이닉스 대비 강의수강
0
210
3
코딩살구클럽 등록부탁드립니다.
0
78
2
7-F 재귀로 풀시 런타임애러
0
72
1
1-N 문제 질문입니다. (+ 채점오류)
0
82
2
코딩살구클럽 가입 확인 부탁드립니다.
0
86
2
직장인 코테 합격 공부방법 문의
0
120
2
코딩살구클럽 가입 방법
0
92
2
6-H 체점 관련 질문
0
74
1
채점서버 연결 관련 질문입니다
0
101
2
삼성 s직군
0
88
1
삼성 코테 없어짐
0
210
1
코딩살구클럽 가입부탁드립니다
0
87
2
코딩살구클럽 가입 요청 확인부탁드립니다
0
69
2
5-S 테스트 케이스 질문
0
77
2
코살 문제풀이 환경
0
88
2
2 - T 오큰수 문제가 있는 것 같습니다.
0
80
1
추천 추가문제들
0
74
2





