필기 오늘 확인해보니까 (기사 92점 / 산업기사 86점) 나왔네요....^^
음 권강사님 코딩으로 확인이 안되는 문제가 잇어서 코딩 처리 방식을 부탁드립니다...
문제는 중급형태에서 한번 더 꼬아놓은 문제 인것 같은데 답이 틀려서요...
문제를 풀이과정의 맥을 어떻게 잡아야 하는지 알려주세요....ㅜㅜ;;
문제는 열차코드가 Z로 끝나거나 월이용횟수가 7이상인 자료에 대하여 (여행거리 - 탑승인원)에 따라 내림차순으로 정렬했을 째 11번째 좌석코드를 출력하시오. 동일 값 발생시 고객번호에 대해 오름 차순으로 정렬하여 처리하시오
책에나온 정답은 인수값 479 599 ====> BD 가 나오는데 저는 NT가 나옵니다 ㅜㅜ;;
Option Explicit
Sub main()
''필수변수지정
Dim 인수1, 인수2, i As Long Dim 버퍼 As String ''핵심변수지정
Dim 월이용횟수, 여행거리, 탑승인원, 합계(1000), temp1, num, j As Long
Dim 열차코드, 고객번호(1000), 좌석코드(1000), temp2 As String
''인수지정
인수1 = Val(Left(Command, InStr(Command, " "))) 인수2 = Val(Mid(Command, InStr(Command, " "))) ''입력파일지정
Open "c:\c_it\data\abc0015.txt" For Input As #1 For i = 1 To 인수2 Line Input #1, 버퍼 If i >= 인수1 Then ''변수값지정 월이용횟수 = Val(Right(버퍼, 2)) 여행거리 = Val(Mid(버퍼, 27, 5)) 탑승인원 = Val(Mid(버퍼, 24, 3)) 열차코드 = Trim(Mid(버퍼, 6, 2)) ''표작성 ''핵심알고리즘 If 열차코드 = "Z" Or 월이용횟수 >= 7 Then num = num + 1 합계(num) = (여행거리 - 탑승인원) 좌석코드(num) = Trim(Mid(버퍼, 8, 2)) 고객번호(num) = Val(Left(버퍼, 5)) End If End If Next i ''정렬알고리즘 For i = 1 To num For j = i To num If (합계(i) < 합계(j)) Or ((합계(i) = 합계(j)) And (고객번호(i) > 고객번호(j))) Then temp1 = 합계(i) 합계(i) = 합계(j) 합계(j) = temp1 temp2 = 고객번호(i) 고객번호(i) = 고객번호(j) 고객번호(j) = temp2 End If Next j Next i Close #1 ''출력파일지정 Open "c:\c_it\data\ans1.txt" For Output As #2 Print #2, 인수1, 인수2, 좌석코드(11) Debug.Print 인수1, 인수2, 좌석코드(11) Close #2 End Sub
이문제를 보면 (여행거리 - 탑승인원) ==> 1차정렬(내림차순), 11번째 좌석코드출력이므로 정렬값과 출력값이 틀리므로 중급형태로 단이하를 처리해서 고객번호에 대해 오름차순을 처리 ==> 2차 정렬 하는 문제인것 같은데 답이 틀리게 나옵니다....
일반적으로 중급형태의 문제를 보면 정렬값과 출력값이 틀리면서 단이하를 처리하는데 단이 하출력값이 출력값과 동일하게 나오는데 이문제는 틀리거든요...어떻게 해야하는지 알려주세요..........
|