Algorism - 최대값을 기준으로 여러개의 입력받은 값을 나눔.
Posted 03 2, 2009 13:44, Filed under: Language/Etc
# 한번의 광고 클릭으로, 당신을 대신해서 불우이웃을 도울 기회가 많아집니다.
사용언어 MSSQL, ASP
<%
# 해당하는 각각 컬럼의 선택한 개수를 구한다.
# SQL 처리
SELECT
SUM(CASE WHEN choice = '벅스' THEN 1 ELSE 0 END)AS 'bugs',
SUM(CASE WHEN choice = '엠넷' THEN 1 ELSE 0 END)AS 'mnet',
SUM(CASE WHEN choice = '소리바다' THEN 1 ELSE 0 END)AS 'sori'
FROM TEST_TABLE
WHERE search_week = 8
# ASP 처리
' 정의된 총 값이 500일때, 3개의 입력값을 받아서,
' 각각의 값이 500/3 의값인 166,167 보다 작을경우, 작은값은 그대로 두고 각각 할당된값을 채우기위함.
' 입력값중에서 167보다 큰 값에서 모자란 값 만큼을 더한다.
Dim groupLotteryCnt(3), lackCnt, groupTot(3), maxLottery, lackLottery, limitLottery(3), lackLimitLottery
groupTot(0) = 191 ' 입력값 1 예)'bugs'
groupTot(1) = 165 ' 입력값 2 예)'mnet'
groupTot(2) = 200 ' 입력값 3 예)'sori'
maxLottery = 500 ' 최대 값
lackLottery = 0
lackGroup = 0
limitLottery(0) = Fix(maxLottery/3)
limitLottery(1) = Fix(maxLottery/3)
limitLottery(2) = Fix(maxLottery/3)
For k = 0 To 50
For i = 0 To 2
If groupTot(i) < limitLottery(i) then
limitLottery(i) = groupTot(i)
End If
Next
lackLottery = maxLottery-(limitLottery(0)+limitLottery(1)+limitLottery(2))
If lackLottery = 0 or (groupTot(0)+groupTot(1)+groupTot(2)) = (limitLottery(0)+limitLottery(1)+limitLottery(2)) Then
Exit for
End If
lackLimitLottery = Fix(lackLottery/3)
If lackLimitLottery < (lackLottery/3) Then
lackLimitLottery = lackLimitLottery + 1
End If
For i = 0 To 2
limitLottery(i) = limitLottery(i) + lackLimitLottery
next
next
' 설정한 최대값에서 입력받은 3개의 배열 합을뺀 값이 -1 일때 첫번째 배열에서 1을 뺀다.
' maxLottery 에 정의한 500을 맞추기위함
If lackLottery < 0 Then
limitLottery(0) = limitLottery(0) - 1
End If
%>
<%=limitLottery(0)%><BR>
<%=limitLottery(1)%><BR>
<%=limitLottery(2)%><BR>
<!--
출력 값
167
165
168
-->
<%
# 해당하는 각각 컬럼의 선택한 개수를 구한다.
# SQL 처리
SELECT
SUM(CASE WHEN choice = '벅스' THEN 1 ELSE 0 END)AS 'bugs',
SUM(CASE WHEN choice = '엠넷' THEN 1 ELSE 0 END)AS 'mnet',
SUM(CASE WHEN choice = '소리바다' THEN 1 ELSE 0 END)AS 'sori'
FROM TEST_TABLE
WHERE search_week = 8
# ASP 처리
' 정의된 총 값이 500일때, 3개의 입력값을 받아서,
' 각각의 값이 500/3 의값인 166,167 보다 작을경우, 작은값은 그대로 두고 각각 할당된값을 채우기위함.
' 입력값중에서 167보다 큰 값에서 모자란 값 만큼을 더한다.
Dim groupLotteryCnt(3), lackCnt, groupTot(3), maxLottery, lackLottery, limitLottery(3), lackLimitLottery
groupTot(0) = 191 ' 입력값 1 예)'bugs'
groupTot(1) = 165 ' 입력값 2 예)'mnet'
groupTot(2) = 200 ' 입력값 3 예)'sori'
maxLottery = 500 ' 최대 값
lackLottery = 0
lackGroup = 0
limitLottery(0) = Fix(maxLottery/3)
limitLottery(1) = Fix(maxLottery/3)
limitLottery(2) = Fix(maxLottery/3)
For k = 0 To 50
For i = 0 To 2
If groupTot(i) < limitLottery(i) then
limitLottery(i) = groupTot(i)
End If
Next
lackLottery = maxLottery-(limitLottery(0)+limitLottery(1)+limitLottery(2))
If lackLottery = 0 or (groupTot(0)+groupTot(1)+groupTot(2)) = (limitLottery(0)+limitLottery(1)+limitLottery(2)) Then
Exit for
End If
lackLimitLottery = Fix(lackLottery/3)
If lackLimitLottery < (lackLottery/3) Then
lackLimitLottery = lackLimitLottery + 1
End If
For i = 0 To 2
limitLottery(i) = limitLottery(i) + lackLimitLottery
next
next
' 설정한 최대값에서 입력받은 3개의 배열 합을뺀 값이 -1 일때 첫번째 배열에서 1을 뺀다.
' maxLottery 에 정의한 500을 맞추기위함
If lackLottery < 0 Then
limitLottery(0) = limitLottery(0) - 1
End If
%>
<%=limitLottery(0)%><BR>
<%=limitLottery(1)%><BR>
<%=limitLottery(2)%><BR>
<!--
출력 값
167
165
168
-->
"Language / Etc" 분류의 다른 글
| SNS - 페이스북, 트위터, 미투데이등.. SNS 붙이기 (2) | 2011/07/06 |
| C 언어 (0) | 2010/04/02 |
| bat 파일로 FTP 파일 업, 다운로드 (0) | 2009/10/16 |
| 프로그램 언어의 역사 이미지 (0) | 2009/06/19 |
| Http 통신규약 문서 (0) | 2009/06/16 |
| 필드 갯수만큼 출력, 개행 (0) | 2009/04/01 |
| 선택 정렬(Selection Sort) (0) | 2009/03/20 |
# 한번의 광고 클릭으로, 당신을 대신해서 불우이웃을 도울 기회가 많아집니다.
Tag : algorism
Response :
0 Trackback
,
0 Comment
Trackback URL : http://develop.sunshiny.co.kr/trackback/151