너무 기본적인 개념 질문드려서 죄송합니다.. ㅠㅠ
안녕하세요 선생님 🙂
플로이드 와샬 개념문제로 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] 값 그대로를 출력합니다. 즉, 경로가 있으면 그 경로의 거리를 출력합니다.
감사합니다.
교안 158페이지 문의드립니다
0
10
2
코딩살구클럽 관련 건의사항
0
27
1
코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다
0
13
1
진행 방법 질문드립니다!
0
44
2
2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.
0
55
2
2주차 개념#12 트리 순회
0
26
2
백준사이트가 종료된다고 합니다.
0
286
2
백준 서비스 종료
9
890
1
sk 하이닉스 코테 대비
0
367
2
3-G 최댓값 질문
0
50
1
모듈러 연산 값이 10이 아닌 경우도 있지 않나요?
0
83
2
3-I 코드 질문드립니다.
0
62
2
3-N 질문 있습니다.
0
66
2
학습방법
0
102
2
4-H 질문 있습니다 (코드 리뷰)
0
66
2
코딩테스트 어디까지 준비해야 하는지 질문이 있습니다.
0
170
2
2-O 반례가 무엇일지 어떤 부분이 틀렸는지 잘 모르겠습니다.
0
69
2
2주차 개념 #4-2. 인접행렬 질문있습니다.
0
64
2
1-A 문제풀이 후 궁금한 점이 생겨서 질문드립니다.
0
51
2
조합 재귀 풀이 확인 해주시면 감사하겠습니다.
0
68
2
함수별 시간복잡도
0
73
2
3-h 질문입니다.
0
49
1
안녕하세요 선생님. 시간 복잡도 4번 질문있습니다.
0
53
2
1-I 문제 질문 드립니다.
0
76
2





