게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
닉언죄) REGENTAG, 모노로봇, 겨울늑대 님 감사합니다.
게시물ID : programmer_10652짧은주소 복사하기
작성자 : ltearl
추천 : 0
조회수 : 378회
댓글수 : 9개
등록시간 : 2015/05/31 21:14:43
옵션
  • 본인삭제금지
5/25일경 올린 질문글
http://www.todayhumor.co.kr/board/view.php?table=programmer&no=10428&s_no=10428&kind=search&search_table_name=programmer&page=1&keyfield=subject&keyword=%EC%88%AB%EC%9E%90%EB%A5%BC

에 대해 3분이서 친절하게 답변을 달아주셔서 해결을 했습니다.

글링크를 들어가기 귀찮으신 분을 위해 질문글과 해결방법을 설명드리자면

1. 3자리의 수가 들어오게 됩니다 (001,002,....009,010,...998,999)

2. 들어온 숫자의 값은 +1되어서 나가야합니다 (001->002,....)

3. 999가 들어온순간 999부터는 규칙이 변화됩니다

4. 999가 들어오면 다음 숫자는 A01이 됩니다

5. 그다음 규칙은 A01,A02....A10,A11....A98,A99, B01,B02....B99....Z01....Z99 입니다.

이를 해결하고자 조건 3개(들어온 값이 1~998인지/999인지/나머지 인지)으로 나누어 나름 해결을 했는데 

if 입력값 <= 1 and 입력값 >= 998   //입력값이 1~998인경우
RETURN 입력값=입력값+1

else if 입력값 == 999  //입력값이 999인경우
RETURN  입력값 = A01
else  //나머지 경우 A01,A02...B01,B02....
strFnum 선언  //입력되는 3자리숫자중 앞에 첫번째 자리 문자  ex) A01에서 A에 해당
strBnum 선언  //입력되는 3자리숫자중 두 번째, 세 번째 자리 문자 ex) A01에서 01에 해당

strFnum=입력값.left(0)
strBum=입력값.right(1)
if strBnum == 99   //A99,B99,C99.....
strFnum= Asc(strFnum+1)   // 아스키코드 값을 증가시켜 가르키는 알파벳 값을 올려줍니다.
strBnum=01
else  //A01,A02....A98, B01,B02....B98....
strBnum=strBum + 1  //01->02, 02->03...
end if
RETURN 입력값 = strFnum & strBum 
end if

보시는 바와같이 이중IF문이지만 조건의 갯수가 3개여서 보기가 좀 그렇습니다.



그래서 질문글을 올리게 되었고 답변 댓글들을 참조하여 아래와 같이 변형하였습니다.

1.숫자를 입력받는다

2.받은 숫자를 +1 증가 시킨다

3.증가된 값이 1000미만이면 그대로 리턴한다 (분기1)

4.증가된 값이 1000이상 이면 값을 100으로 나눠서 몫(fNum로 칭함)과 나머지(bNum로 칭함)로 따로 분리한다

4.1  fNum의 값에다가 +55를 하여 아스키 코드로 표현한다

4.2 bNum의 값이 0인경우 B의 값에 +1을 한다.
999->1000인경우 1000을 A01로 표현하기 위해서 00->01로 바꿔주어야 하기때문입니다.

4.3 fNum와 bNum의 값을 스트링형태로 묶어준다

4.4 원하고자 하는 표현 방식(A01)방식대로 나오며 이것을 반환한다. (분기2)

이렇게 해결이 되었습니다. 

여기서 또 문제가 하나 발생하였었는데 1번과 2번 사이에서 받은 숫자가 일반적인 1~999가 아닌 A01,A02...인 경우가 발생하는데

이를 위해 값이 일반적인 정수인지, 아스키코드값이 잇는 숫자인지 판별하는 함수를 1과 2번 사이에 추가하여 해결을 하였습니다.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호