2025-sv-algorithm 8

[8주차] 문자 인식,전화번호 목록,성실한 농부

1) 문자 인식1. 각 케이스마다 인식된 문자 수와 전체 문자 수를 0으로 초기화한 후 줄 단위로 입력을 받는다2. 입력된 줄이 빈 줄이면 해당 케이스의 입력을 종료하고 다음 케이스로 넘어간다3. 줄에 있는 문자를 하나씩 확인하며 ‘#’이면 인식 실패로 전체 문자 수만 증가시키고 이외에는 전체 문자 수와 인식된 문자 수를 모두 증가시킨다4. 모든 줄을 처리한 뒤에는 인식률을 (R / A) × 100으로 계산하고 소수 둘째 자리에서 반올림한다5. 그 결과가 정수라면 정수로 변환하여 소수점 없이 출력한다6. 마지막으로 “Efficiency ratio is X%.” 형태로 결과를 출력한다 2) 전화번호 목록1. 테스트 케이스 개수를 입력받는다.2. 각 케이스마다 전화번호들을 리스트에 저장한다.3. 전화번호들을..

2025-sv-algorithm 2025.08.27

[7주차] 단어 수학,줄세우기,N-퍼즐

1) 단어 수학 1. 단어가 몇 개인지 먼저 입력을 받는다.2. 입력받은 개수만큼 단어를 차례대로 저장한다.3. 각 단어에 있는 알파벳이 어떤 자리값에 있는지 확인한다.4. 맨 뒤 글자는 1의 자리, 그 앞은 10의 자리, 그 앞은 100의 자리처럼 계산한다.5. 단어를 뒤에서부터 보면서 알파벳마다 자리값을 계속 더한다.6. 알파벳마다 점수처럼 누적된 값이 생긴다.7. 점수가 크다는 것은 그 알파벳이 높은 자리에서 많이 나온다는 뜻이다.8. 점수가 큰 알파벳부터 차례로 큰 숫자를 준다.9. 가장 큰 점수를 가진 알파벳에는 9를 주고, 그다음은 8, 그다음은 7을 준다.10. 숫자가 다 정해지면 단어 안의 알파벳을 전부 숫자로 바꾼다.11. 바뀐 단어들을 숫자로 바꾼 다음 전부 더한다.12. 계산된 총합을..

2025-sv-algorithm 2025.08.19

[6주차] 새,초콜릿 자르기,직사각형에서 탈출

1) 1568번 : 새1.새의 수를 입력 하 시간과 부를 숫자를 1로 시작한다.2.새가 남아 있는 동안 남은 새보다 부를 숫자가 크면 1로 리셋하고 그 숫자만큼 새를 날려보내고 시간과 숫자를 1씩 늘린다.3.모든 새가 날아가면 걸린 시간을 출력한다. 2) 2163번 : 초콜릿 자르기1.input()으로 한 줄 문자열을 입력받는다.2. split()으로 공백 기준 나누고 int()를 사용해 숫자로 변환한다3. n * m - 1 으로 계산하여 출력한다. 3) 1085번 : 직사각형에서 탈출1.input()을 통해 한 줄로 "x y w h"를 입력받는다.2.split()으로 입력받은 문자열을 공백 기준으로 나누어 각각 "x", "y", "w", "h"라는 문자열 리스트를 만든다.3.각각의 문자열을 int()로..

2025-sv-algorithm 2025.08.08

[5주차] 숫자 문자열과 영단어,소수 찾기,n진수 게임

1) 숫자 문자열과 영단어 1. 숫자 영단어와 숫자를 짝지은 딕셔너리 d를 만든다.2. s 안에 있는 영단어(w)를 숫자(n)로 바꾼다.3. 다 바뀐 s를 정수형으로 바꿔서 리턴한다. 2) 소수 찾기 1. 2부터 n까지 모든 수를 소수(True)라고 가정한다.2. 0과 1은 소수가 아니니 제외한다.3. 2부터 √n까지 순서대로 돌면서 그 수가 소수이면 배수가 모두 소수가 아니라고 표시한다.4. 마지막에 True로 남은 수를 모두 세면 그것이 소수의 개수이다. 3) n진수 게임1. to_base 함수는 10진수 숫자 num을 base진법으로 바꿔서 문자열로 반환한다.2. 0부터 시작해서 차례대로 숫자를 n진법으로 바꿔서 문자열 s에 이어 붙인다.3. 길이가 t * m 이상 될 때까지 반복한다.4. 게임 ..

2025-sv-algorithm 2025.08.05

[4주차] 약수의 개수와 덧셈, 콜라츠 추측, 멀리 뛰기

1) 약수의 개수와 덧셈 1.left부터 right까지 i를 하나씩 본다2. x로 1~i까지 나눠서 약수 개수를 센다3. 약수가 짝수면 더하고 홀수면 뺀다4. 반복 끝나면 answer를 반환한다 2) 콜라츠 추측 1.count에 작업 횟수를 저장한다2. num이 1이 아니면 반복을 시작한다3. 500번 넘으면 바로 -1 리턴4. num이 짝수면 2로 나누고 홀수면 3곱하고 1 더한다5. 작업 횟수 1 증가6. num이 1 되면 count 반환한다 3) 멀리 뛰기1. 1칸,2칸인 경우 초기화 한다2. n이 1이면 1을 반환한다3. 3부터 n까지 반복하며 결과를 계산한다4.이전 값을 더해서 나머지를 구한다 5. 마지막 값을 반환한다

2025-sv-algorithm 2025.07.30

[3주차] 가운데 글자 가져오기,최소 직사각형,피보나치 수

1) 가운데 글자 가져오기1. 문자열의 길이 구한다2. 문자열의 길이가 홀수인 경우 가운데 문자만 반환한다3. 문자열의 길이가 짝수인 경우에는 가운데 두 글자를 슬라이싱하여 반환한다 2) 최소 직사각형1. 각 명함의 가로, 세로 중 큰 값을 가로로 정한다2. 작은 값을 세로로 정한다3. 모든 명함 중 가로의 최댓값과 세로의 최댓값을 찾는다4.두 최댓값을 곱한 값이 최소 지갑 크기 3) 피보나치 수 1. 처음 두 수를 0과 1로 정한다.2. 2부터 n까지 반복하며 이전 두 수를 더한다.3. 더한 값을 1234567로 나눈 나머지를 저장한다.4. 이전 두 수를 한 칸씩 옮긴다.5. 반복이 끝나면 n번째 피보나치 수(나머지)를 반환한다.

2025-sv-algorithm 2025.07.22

[2주차] 핸드폰 번호 가리기,부족한 금액 계산하기,짝지어 제거하기

1) 핸드폰 번호 가리기1. len() 함수로 전화번호의 길이를 구한다2. 슬라이싱으로 [0:-4] front와 [-4:] back으로 나누어 계산한다3. 뒤에서 4자리를 제외하고 앞부분 길이만 *로 변경한다 2) 부족한 금액 계산하기1. for in range를 사용하여 전체 요금을 계산한다2. if문을 사용하여 가진 돈과 비교를 통해 부족한 금액 계산한다 3) 짝지어 제거하기 1. 빈 스택을 만든다2. 문자열 s를 왼쪽부터 한 글자씩 차례로 반복3. 스택이 비어있지 않고 마지막 글자와 현재 글자가 같다면 스택에서 제거 아니라면 스택에 추가한다4. 문자열의 모든 글자를 확인하고 나면 스택이 비어있는지 확인한다5. 스택이 비어 있다면 1을 그렇지 않다면 0을 리턴한다

2025-sv-algorithm 2025.07.16

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

1) 없는 숫자 더하기 1. solution이라는 이름의 함수를 정의2. total이라는 변수를 만들고 그 값을 0으로 초기화3. range(10)을 이용해 0부터 9까지의 숫자를 하나씩 반복문에 넣음4. 반복문에서 꺼낸 숫자가 numbers 안에 없다면 total에 그 숫자를 더함 2) 문자열 내 p와 y의 개수 1. solution이라는 이름의 함수를 정2. 문자열 s를 모두 소문자로 바꿈 (대소문자 구별 없이 비교할 수 있도록)3. p_count와 y_count라는 변수를 만들고 'p'와 'y' 문자가 문자열에 몇 번 나오는지 셈4. 'p'와 'y'의 개수가 같으면 True 다르면 False를 반환3) 숫자의 표현 1. count 변수 만들어서 방법 수 세기 시작2. 시작 숫자(start)를..

2025-sv-algorithm 2025.07.09