본문 바로가기
VBA

[VBA] 사이냅소프트 면접문제(feat. 코딩도장)

by 일등미노왕국 2022. 4. 28.

https://codingdojang.com/scode/410?answer_mode=hide 

 

코딩도장

프로그래밍 문제풀이를 통해서 코딩 실력을 수련

codingdojang.com

요즘 VBA에 흠뻑 빠지셔서 열심히 공부하고 계신 VBA공부중님이 올린 글이다..

구글링을 해보았더니 사이냅소프트 면접 문제 였던거 같다...

지금은 VBA로밖에는 구현이 안되겠지만 시간이 지나면 좀 더 많은 컴퓨터 언어로 구현을 해보고 싶다.

 

문제 난이도는 그리 크지 않다.

3번과 4번을 어떻게 구현할지에 대한 생각을 하면된다.

 

어떤 구문을 사용할까 하다가 중복값과 정렬이 동시에 가능한 ArrayList로 풀어보기로 했다..

결과 역시 나쁘지 않다.......깔끔..

 

밥먹기전 이렇게 블로그 글거리를 구하게 되서 기쁘다...ㅋㅋ

 

Option Explicit
Dim Al As Object
Dim Vresult, Va
Sub Haja_test()

    Dim rngX As Range: Set rngX = [b7]              '= 정답을 출력할 변수
    Dim V
    
    V = Split([b4], ",")
        rngX = "답 : " & haja1(V) & " 명"           '= 1번 정답
    
    Set rngX = rngX.Offset(2)
        rngX = "답 : " & haja2(V) & " 번"           '= 2번 정답
    
    Set rngX = rngX.Offset(2)
        rngX = "답 : " & haja3(V)                   '= 3번 정답
    
    Set rngX = rngX.Offset(2)
        Al.Sort                                     '= 3번에 구한 ArrayList의 값을 정렬해라(오름차순)
        Vresult = Al.toarray                        '= 정렬된 ArrayList값을 결과 배열에 담아라
        rngX = "답 : " & Join(Vresult, ",")         '= 4번 정답  /  ","로 결합하여 4번 답을 도출해라

End Sub
Function haja1(V) As Long

    For Each Va In V                                 '= 이씨와 김씨 성을 가진 사람의 수
        If Left(Va, 1) = "이" Or Left(Va, 1) = "김" Then haja1 = haja1 + 1
    Next Va

End Function
Function haja2(V) As Long
    
    For Each Va In V                                '= 이재영 동명이인의 수
        If Va = "이재영" Then haja2 = haja2 + 1
    Next Va

End Function
Function haja3(V) As String                         '= 중복값을 제외한 고유값을 구하는 문제

    Set Al = CreateObject("system.collections.arraylist")  '= 어레이리스트 선언
                                                    
    For Each Va In V
       If Not Al.contains(Va) Then Al.Add Va        '= 어레이리스트에 중복값이 없다면 추가해라
    Next Va
    
        Vresult = Al.toarray                        '= 어레이리스트의 값을 결과 배열로 넘겨라
        haja3 = Join(Vresult, ",")                  '= 결과배열을 "," 로 결합하여 뿌려라

End Function

사이냅소프트문제(22.04.28).xlsm
0.02MB

 

댓글