문제 2】출발지 코드가 SU이고 승객만족도가 23 이하인 자료에 대하여 (월이용회수 * 여행거리)값의 자료 중에서 가장 큰 값의 도착지코드를 출력하되, 가장 큰 (월이용회수* 여행거리)값이 중복될 경우 중복자료 중 가장 작은 고객번호의 도착지코드를 출력하시오.(20점) => 결과적으로 도착지코드를 출력하는 문제입니다. 문장를 잘 끊어서 이해하셔야 합니다. 일반적은 고급유형과는 조금 다른 문제입니다. 보통 고급은 중복될 경우 무엇을 출력하라고 주어지는데...이 문제는 중복자료 중 ()의 () 을 출력하라는 식입니다. 그래서 코딩이 조금 다릅니다.
핵심코딩에 대해 설명드립니다.
Open "c:\c_it\data\abc1112.txt" For Input As #1 ''최소고객번호 초기화 최소고객번호 = 999999999 최대값 = 0 ===> 누락되었습니다. 추가해 주시면 됩니다.(자료실 자료 수정하였습니다.) For K = 1 To 인수2 Line Input #1, 버퍼 If K >= 인수1 Then ''변수 저장 출발지코드 = Trim(Mid(버퍼, 20, 2)) 승객만족도 = Val(Mid(버퍼, 16, 2)) 월이용회수 = Val(Mid(버퍼, 32, 2)) 여행거리 = Val(Mid(버퍼, 27, 5)) 고객번호 = Val(Mid(버퍼, 1, 5)) ''도착지코드 구하기 If 출발지코드 = "SU" And 승객만족도 <= 23 Then If 최대값 < 월이용회수 * 여행거리 Or _ (최대값 = 월이용회수 * 여행거리 And 최소고객번호 > 고객번호) Then 최대값 = 월이용회수 * 여행거리 최소고객번호 = 고객번호 도착지코드 = Trim(Mid(버퍼, 22, 2)) ==> 도착지코드는 if문 안에서 코딩하셔야 합니다 End If End If End If Next K Close #1 ''출력 파일 처리 Open "c:\c_it\data\ans2.txt" For Output As #2 Print #2, 인수1, 인수2, 도착지코드 ===> 결과적으로 도착지코드를 출력하셔야 합니다. 문제에서 가장 작은 고객번호의 도착지코드를 라고 조건이 붙었으므로 조건문 안에 코딩하셔야 합니다. Close #2 |