코딩일기/자격증

[정보처리기사] [Python] 문자열 슬라이싱과 f-string 활용 | 2024년 2회 정보처리기사 실기 기출문제

jhy_2023 2025. 4. 9. 15:41
728x90
반응형

2024년 2회 정보처리기사 실기 기출문제

문제

다음 파이썬 코드의 실행 결과를 쓰시오.

def cnt(str, p):
    result = 0
    for i in range(len(str) - len(p) + 1):
        sub = str[i:i+len(p)]
        if sub == p:
            result += 1
    return result

str = "abdcabcabca"
p1 = "ca"
p2 = "ab"

print(f'ab{cnt(str, p2)}ca{cnt(str, p1)}')

정답

ab3ca3
반응형

해설

▼ 비슷한 기출 문제도 같이 풀어보세요

 

[정보처리기사] [Python] 문자열에서 특정 패턴 찾는 방법 | 슬라이싱 & f-string 활용 |

2024년 2회 정보처리기사 실기 기출문제문제다음 파이썬 코드의 실행 결과를 쓰시오.def fnCalculation(x, y): result = 0; for i in range(len(x)): temp = x[i:i+len(y)] if temp == y: result += 1; return resulta = "abdcabcabca"p1 = "

august-jhy.tistory.com


📌 핵심 개념

1️⃣ 슬라이싱 (Slicing)

text = "abcdef"
print(text[1:4])  # 결과: "bcd"
  • 슬라이싱(Slicing)은 문자열 또는 리스트에서 일정 범위의 일부를 잘라내는 작업입니다. 슬라이싱은 시작 인덱스부터 끝 인덱스 직전까지 선택한다는 점이 중요합니다.
  • text[1:4]는 1번 인덱스부터 4번 인덱스 '직전까지' 잘라낸 문자열을 의미합니다. 즉, 1, 2, 3번째 문자 "bcd"가 결과로 출력됩니다.

2️⃣ range() 함수

range(start, stop, step)
  • 파이썬의 range() 함수는 정해진 범위만큼 반복할 때 사용합니다. 주로 for 반복문과 함께 사용되어, 정해진 횟수만큼 반복 작업을 수행할 때 쓰입니다. 
  • range() 함수는 최대 세 개의 인자를 받을 수 있습니다:
매개변수 의미 예시
start 시작 값 (포함) 생략 시 기본값은 0
stop 종료 값 (불포함) 반드시 지정해야 함
step 증가값 (기본값은 1) 음수도 가능함

🔶 range(stop)

range(5)
→ [0, 1, 2, 3, 4]

🔶 range(start, stop)

range(2, 6)
→ [2, 3, 4, 5]

🔶 range(start, stop, step)

range(1, 10, 2)
→ [1, 3, 5, 7, 9]

🔶 step이 음수일 경우

range(10, 0, -2)
→ [10, 8, 6, 4, 2]

3️⃣ len() 함수

len(대상)
  • len()은 "length(길이)"의 약자로, 문자열, 리스트, 튜플, 딕셔너리 등과 같은 시퀀스(순서 있는 자료형)의 요소 개수를 반환하는 파이썬의 내장 함수입니다.
text = "apple"
print(len(text))  # 출력: 5
  • 문자열 "apple"에는 5개의 문자(a, p, p, l, e)가 있으므로 결과는 5입니다.
fruits = ["apple", "banana", "cherry"]
print(len(fruits))  # 출력: 3
  • 리스트에는 3개의 요소가 있으므로 결과는 3입니다.

4️⃣ 문자열 포맷팅(f-string) : 문자열 내에 특정 값을 삽입하는 방법

name = "Alice"
age = 30
print(f"My name is {name} and I am {age} years old.")
# 출력 : My name is Alice and I am 30 years old.


a = 3
b = 4
print(f"{a} + {b} = {a + b}")  
# 출력: 3 + 4 = 7
  • f-string은 formatted string literal의 줄임말로, 문자열 내에 중괄호 {}를 이용해 변수나 표현식을 직접 삽입할 수 있는 방법입니다. 
  • 문자열 앞에 f(또는 F)를 붙이고, 따옴표의 안의 중괄호 {} 안에 변수명, 수식, 함수 호출 등을 넣을 수 있습니다. 계산식도 중괄호 안에서 바로 처리할 수 있습니다.
728x90

📌 문제 해설

이 코드는 문자열 "abdcabcabca" 안에서 두 개의 패턴 "ab" (변수 p2) "ca" (변수 p1)가 각각 몇 번 나오는지 세는 함수 cnt를 정의하고, 그 결과를 이용해 최종적으로 ab3ca3이라는 문자열을 출력합니다.

  • cnt(str, p2)와 cnt(str, p1) 함수가 호출되어 그 결과값을 받아옵니다.
    • cnt(str, p2)는 전체 문자열 str에서 패턴 p2 (즉, "ab")가 몇 번 등장하는지를 계산합니다.
    • cnt(str, p1)는 전체 문자열 str에서 패턴 p1 (즉, "ca")가 몇 번 등장하는지를 계산합니다.
  • 함수 cnt(str, p)는 문자열 전체에서 패턴과 같은 길이만큼 잘라낸 부분 문자열을 하나씩 확인하고 만약 그 부분 문자열이 패턴과 같다면, 결과값 result를 1씩 증가시키는 역할을 합니다.
  • 전체 문자열 str = "abdcabcabca" 의 길이는 11입니다. 패턴 "ab" 또는 "ca"의 길이는 2입니다. 따라서 반복문은 range(11 - 2 + 1) = range(10)와 같이 0부터 9까지 총 10회 반복합니다.
  • sub = str[i:i+len(p)] 현재 인덱스 i에서 i+2까지의 문자열을 잘라냅니다. 이 sub가 우리가 찾고자 하는 패턴과 같은지 검사합니다. 같으면 카운터(result)를 1 증가시킵니다.
  • f-string 안에서 f'ab{cnt(str, p2)}ca{cnt(str, p1)}'는 다음과 같이 작동합니다:
    • 1. 먼저 "ab" 문자열을 만듭니다.
    • 2. 이어서 {cnt(str, p2)} 부분이 계산되어 3으로 대체됩니다.
    • 3. 그 다음 "ca" 문자열을 이어 붙입니다.
    • 4. 마지막으로 {cnt(str, p1)} 부분이 계산되어 3으로 대체됩니다.
      따라서 최종적으로 구성되는 문자열은 "ab" + "3" + "ca" + "3", 즉 **"ab3ca3"**가 됩니다.

cnt(str, p2)
cnt(str, p1)

 


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형