https://exercism.org/tracks/abap/exercises/scrabble-score/solutions
문자열에서 특정 알파벳을 포함할 시
점수를 계산해서 return 하는 메소드 작성을 하는 퀴즈.
주의할 점은 대소문자를 고려해서 작성해야 한다는 점.
코드 테스트시 다양한 input문을 집어넣어 적절히 계산하는지 보는 듯 하다.
내가 작성한 답변은
CLASS zcl_scrabble_score DEFINITION PUBLIC .
PUBLIC SECTION.
DATA : gs_str TYPE string,
gv_len TYPE I,
gv_1 TYPE I,
gv_2 TYPE I,
gv_3 TYPE I,
gv_4 TYPE I,
gv_5 TYPE I,
gv_8 TYPE I,
gv_10 TYPE I,
INPUT TYPE STRING.
METHODS score
IMPORTING
input TYPE string OPTIONAL
RETURNING
VALUE(result) TYPE i.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_scrabble_score IMPLEMENTATION.
METHOD score.
" add solution here
CLEAR gs_str.
gv_len = strlen( input ).
DO gv_len TIMES.
gv_len = gv_len - 1.
gs_str = input+0(1).
IF gs_str CA 'AaEeIiOoUuLlNnRrSsTt'.
ADD 1 TO gv_1.
ELSEIF gs_str CA 'DdGg'.
ADD 1 TO gv_2.
ELSEIF gs_str CA 'BbCcMmPp'.
ADD 1 TO gv_3.
ELSEIF gs_str CA 'FfHhVvWwYy'.
ADD 1 TO gv_4.
ELSEIF gs_str CA 'Kk'.
ADD 1 TO gv_5.
ELSEIF gs_str CA 'JjXx'.
ADD 1 TO gv_8.
ELSEIF gs_str CA 'QqZz'.
ADD 1 TO gv_10.
ENDIF.
input = input+1(gv_len).
ENDDO.
result = gv_1 + ( 2 * gv_2 ) + ( 3 * gv_3 ) + ( 4 * gv_4 ) + ( 5 * gv_5 ) + ( 8 * gv_8 ) + ( 10 * gv_10 ).
ENDMETHOD.
ENDCLASS.
다른 사람의 답변 중 괜찮았던 것은
METHOD score.
result = count( val = input regex = '[aeioulnrst]' case = abap_false ) * 1 +
count( val = input regex = '[dg]' case = abap_false ) * 2 +
count( val = input regex = '[bcmp]' case = abap_false ) * 3 +
count( val = input regex = '[fhvwy]' case = abap_false ) * 4 +
count( val = input regex = '[k]' case = abap_false ) * 5 +
count( val = input regex = '[jx]' case = abap_false ) * 8 +
count( val = input
regex = '[qz]'
case = abap_false ) * 10. "false인 경우 대소문자 구분 x
ENDMETHOD.
SAP BAdI 추가 (0) | 2024.09.13 |
---|---|
CLASS TEST #4 : Reverse String (0) | 2024.01.12 |
CLASS TEST #1 : Hello, World! (0) | 2024.01.09 |
ABAP - 다른 SAP끼리 데이터 송수신하는 RFC 펑션 프로그램 (0) | 2023.08.23 |
ABAP - BDC 실습(자재 마스터 변경) (0) | 2023.03.17 |