inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

8주차 개념 #1. 펜윅트리(Fenwick Tree)

너무 기본적인 개념 질문드려서 죄송합니다.. ㅠㅠ

해결된 질문

121

한유태

작성한 질문수 79

0

안녕하세요 선생님 🙂

플로이드 와샬 개념문제로 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]가 오른쪽이 되는 것을 한 줄로 요약한 코드라고 알고 있습니다.

개념이 심하게 헷갈리네요 ㅠㅠ 알려주시면 감사하겠습니다..!!

c++ 코딩-테스트

답변 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

3

1

코딩살구클럽 승인

0

17

2

DP 경우의 수 설명이 이해가 되지 않습니다.

0

27

2

3-F 채점 관련 질문

0

23

1

BFS, DFS 활용이 되는 상황에서의 방향성

0

26

2

코딩살구클럽 승인

0

40

2

코딩살구클럽승인

0

32

3

코딩살구클럽 승인

0

48

2

3-D 관련 질문

0

35

2

코살구 회원가입 문의

0

42

2

코살구 로그인 문제

0

65

2

3-A 문제 풀이 관련 질문

0

53

3

2-O 질문 있습니다

0

38

2

2-T 문제에 관한 질문

0

40

2

코딩 살구 클럽 접속 및 사용방법 문의

0

61

2

안녕하세요~. 현재 코살코딩클럽 사이트가 접속이 안됩니다~

0

64

2

코딩살구클럽 로그인문제

0

78

3

코딩 살구 클럽 로그인 문제

0

82

2

2-J 채점관련 질문

0

65

3

코딩 살구 클럽 Python 지원 가능 여부

0

77

1

살구클럽 아이디 없음 문제

0

76

1

1-O 코딩살구클럽 채점관련 질문

0

60

2

히든 테스트 케이스가 사라졌습니다

0

57

1

채점서버 혹시 다른 언어 지원도 가능하게 해주실 수 있나요

1

74

2