SWLUG(2025)/Algorithm

[SV 1주차] 없는 숫자 더하기, 문자열 내 p와 y의 개수, 숫자의 표현

batterygj 2025. 8. 11. 23:54

Q. 0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

1. numbers를 매개변수로 하는 solution 함수를 작성한다.

2. i를 0부터 9까지 반복하도록 설정하고 i가 numbers 안에 존재하지 않으면 answer에 i를 더한다.

3. 마지막에 answer를 반환한다.

 

 

 


 

Q. 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 return합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.

(예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.)

 


1. s를 매개변수로 하는 solution 함수를 작성한다.

2. p와 y의 개수를 저장하는 변수 count_p와 count_y는 0으로 초기화한다.

3. 문자열을 돌면서 'p'나 'P'인 경우엔 count_p가 1씩 증가하고, 'y'나 'Y'인 경우엔 count_y가 1씩 증가한다.

4. count_p와 count_y가 같지 않으면 False를 반환하고 그렇지 않은 경우엔 True를 반환한다.

 

 

 


 

 

Q. Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다.

  • 1 + 2 + 3 + 4 + 5 = 15
  • 4 + 5 + 6 = 15
  • 7 + 8 = 15
  • 15 = 15

자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return 하는 solution를 완성해주세요.

1. 구하는 방법의 수는 count, 더하는 연속된 자연수의 개수는 k이다.

2. k(k-1)/2는 1부터 k-1까지의 합이다. 이 값이 n보다 작을 때까지만 while문을 돈다. (k=5일때 , 최소합이 1+2+3+4=10 이므로 10보다 n이 커야함)

3. 어떤 숫자 x부터 k개의 연속된 숫자의 합으로 n이 될 수 있는지 확인

x+(x+1)+ ...+(x+k-1)=kx+(0+1+...+k-1)

=kx+k*(k-1)//2 = n

temp = n-k*(k-1)//2 (temp=k*x가 되기를 기대하는 후보값)

4. x가 자연수여야하므로 temp를 k로 나눠본다. 나누어떨어지면 count가 1 증가한다.

5. k에 1을 더해서 while문을 돈다.