배열

2024. 11. 12. 16:26정보처리,전산/코딩 : 문제해결

반응형

출석 체크를 할 때 출석한 학생 수를 계산하거나, 투표에서 가장 많이 선택된 후보를 찾는 등의 작업을 배열을 사용해 효율적으로 처리할 수 있다.

1. 출석 체크에서 출석하지 않은 학생 수 구하기

출석한 학생들을 배열로 표시한 다음, 출석하지 않은 학생들의 수를 구할 수 있다. 이때 출석 여부를 1과 0으로 표시하여 출석한 학생들의 총합을 통해 계산할 수 있다. 

 
 
# 예시: 30명의 학생 중 일부만 출석했다고 가정
students = [0] * 31  # 학생 번호 1~30까지 관리 (0번째는 사용하지 않음)
for i in range(28):  # 출석한 학생 번호 28명을 입력받음
    n = int(input())
    students[n] = 1  # 출석한 학생은 1로 표시

total_present = sum(students)  # 출석한 학생들의 총합
absent_count = 30 - total_present  # 전체 학생 수에서 출석한 학생 수를 뺌
print("출석하지 않은 학생 수:", absent_count)
 
 

2. 선거에서 가장 많은 표를 받은 후보 찾기

선거에서 각 후보가 받은 표 수를 배열로 나타내고, 그 중에서 가장 많은 표를 받은 후보의 인덱스를 찾아낼 수 있다.

 

 

# 예시: 5명의 후보가 있다고 가정하고, 각 후보가 받은 표 수를 입력
votes = [10, 25, 30, 15, 20]  # 각 후보가 받은 표 수
max_votes = max(votes)  # 가장 많은 표 수
winner_index = votes.index(max_votes)  # 그 표 수를 가진 후보의 인덱스 찾기

print(f"가장 많은 표를 받은 후보: 후보 {winner_index + 1}, 득표 수: {max_votes}")

 

 

  • 출석체크: 출석 여부를 이진 값(0, 1)으로 기록한 후, 전체 학생 수에서 출석한 학생 수를 빼서 출석하지 않은 학생을 구할 수 있다.
  • 선거 카운트: 각 후보에 대한 득표 수를 배열로 기록한 뒤, max() 함수와 index() 함수를 사용해 최다 득표 후보를 찾을 수 있다.

배열을 사용한 방법은 출석 체크나 투표 집계와 같은 카운팅 작업을 효율적으로 처리하는 데 유용하다.

 

 

 

 

 

 

 

 

 

각 알파벳이 처음 등장하는 위치

 

s =input()
check=[-1] *26
for i in range(len(s)):
    index=ord(s[i])-ord('a')
    
    if check[index] ==-1:
        check[index]=i
for i in range(26):
    print(check[i],end=" ")

 

 

  1. check = [-1] * 26:
    • 소문자 알파벳의 총 개수인 26개의 원소로 이루어진 리스트 check를 만든다. 리스트의 모든 원소는 -1로 초기화되어 있다. 이 리스트는 각 알파벳이 처음으로 등장한 위치를 저장하는 용도로 사용된다.
    • , check[0]은 'a'의 위치를, check[1]은 'b'의 위치를 저장하는 방식이다.
  2. for i in range(len(s))::
    • 문자열 s의 각 문자를 하나씩 순회하는 반복문이다. 여기서 i는 문자열에서 문자의 인덱스(위치)를 나타낸다.
  3. index = ord(s[i]) - ord('a'):
    • ord() 함수는 문자의 아스키 코드 값을 반환한다. 여기서는 해당 문자가 알파벳에서 몇 번째 문자인지를 계산한다.
    • , s[i]가 'a'라면 ord('a')는 97이므로, ord(s[i]) - ord('a')는 0이 된다. 즉, 'a'는 0번째 인덱스에 해당한다.
    • 마찬가지로 'b'는 1, 'c'는 2, ..., 'z'는 25가 된다.
  4. if check[index] == -1:
    • 해당 알파벳이 처음 등장하는 위치를 기록하기 위해, check[index] 값이 -1인 경우(즉, 아직 해당 문자가 등장하지 않은 경우)에만 그 위치를 저장한다.
  5. check[index] = i:
    • 해당 문자가 처음 등장한 위치 i를 check[index]에 저장한다.
  6. for i in range(26)::
    • 26개의 알파벳에 대해 저장된 값을 하나씩 출력하는 반복문이다.
  7. print(check[i], end=" "):
    • check 리스트에 저장된 값을 출력한다. 각 알파벳이 처음 등장한 위치가 출력되며, 등장하지 않은 알파벳은 여전히 -1로 출력된다.
    • end=" "는 출력 결과를 한 줄에 공백으로 구분하여 출력하도록 설정하는 부분이다.

출력 예시

입력: hello

출력: -1 1 2 3 4 ...

이 출력에서:

  • 알파벳 'h'는 입력 문자열에서 0번째 위치에 처음 등장했으므로 그 자리에 해당하는 값이 0이 된다.
  • 'e'는 1번째, 'l'은 2번째, 그리고 'o'는 4번째에 처음 등장한 것을 기록한다.
  • 나머지 알파벳은 입력 문자열에 등장하지 않으므로 -1로 남아있다.

 

 

 

 

 

■ 문자열 숫자 합 구하기

s = input()  # 숫자 문자열 입력

sum = 0
for i in range(len(s)):
    # 문자를 숫자로 변환하고 합계에 더함
    sum += ord(s[i]) - ord('0')

print(sum)  # 최종 합계 출력
반응형