(고급형문제입니다)
고객번호 열차코드 좌석코드 열차요금 승객만족도 고객구분코드 출발지코드 도착지코드
숫자5 문자2 문자2 숫자6 숫자2 문자2 문자2 문자2
탑승인원 여행거리 월이용횟수
숫자3 숫자5 숫자2
문제1) 출발지코드가 SU이고 승객만족도가 23이하인 자료에 대하여 (월이용횟수 * 여행거리)값중 가장 큰 값을 출력하시오. 가장큰(월이용횟수 * 여행거리)값이 중복될 경우 중복자료중 가장 작은 고객번호의 도착지 코드를 출력하시오
정답 494 644 --> MO / 241 341 --> JU
* 제가한 코딩입니다(틀린부분 확인 부탁드립니다)
Option Explicit
Sub main()
''필수변수지정
Dim 인수1, 인수2, 버퍼, i As Variant ''핵심변수지정
Dim 출발지코드, 승객만족도, 월이용횟수, 여행거리, 도착지코드, 고객번호, 최대값, 최소고객번호 As Variant
''인수지정
인수1 = Val(Left(Command, InStr(Command, " "))) 인수2 = Val(Mid(Command, InStr(Command, " "))) ''입력파일지정
Open "c:\c_it\data\abc0026.txt" For Input As #1 ''최대값 및 최소고객번호지정 최대값 = 0 최소고객번호 = 99999999 For i = 1 To 인수2 Line Input #1, 버퍼 If i >= 인수1 Then ''변수값저장 승객만족도 = Val(Mid(버퍼, 16, 2)) 월이용횟수 = Val(Right(버퍼, 2)) 여행거리 = Val(Mid(버퍼, 27, 5)) 출발지코드 = Trim(Mid(버퍼, 20, 2)) 고객번호 = Val(Left(버퍼, 5)) ''핵심알고리즘 If 출발지코드 = "SU" And 승객만족도 <= 23 Then If 최대값 < (월이용횟수 * 여행거리) Or _ 최대값 = (월이용횟수 * 여행거리) And 최소고객번호 > 고객번호 Then 최대값 = (월이용횟수 * 여행거리) 최소고객번호 = 고객번호 도착지코드 = Trim(Mid(버퍼, 22, 2)) End If End If End If Next i Close #1 ''출력파일처리 Open "c:\c_it\data\ans1.txt" For Output As #2 Print #2, 인수1, 인수2, 도착지코드 Debug.Print 인수1, 인수2, 도착지코드 Close #2 End Sub |