120 lines
3.8 KiB
Markdown
120 lines
3.8 KiB
Markdown
# 루비 연습 문제
|
|
|
|
## 1단계: 루비 기초 감각 익히기 (초급 입문)
|
|
|
|
**목표**: 문법, 출력, 변수, 제어문에 익숙해지기
|
|
|
|
1. `"Hello, Ruby!"`를 출력하는 프로그램 작성
|
|
2. 이름을 변수에 저장하고 `"안녕하세요, 이름님"` 출력
|
|
3. 두 정수를 변수로 받아 합, 차, 곱, 몫 출력
|
|
4. 숫자를 입력받아 짝수/홀수 판별
|
|
5. 점수(0~100)를 받아 A/B/C/D/F 등급 출력
|
|
6. 1부터 100까지 출력 (for, while 각각 사용)
|
|
7. 1~100 중 3의 배수만 출력
|
|
8. 사용자 입력이 `"exit"`이면 종료되는 루프 작성
|
|
9. 구구단 2단 출력
|
|
10. 구구단 전체 출력
|
|
|
|
---
|
|
|
|
## 2단계: 메서드와 조건 분기 (초급)
|
|
|
|
**목표**: 메서드 정의, 리턴값, 재사용
|
|
|
|
11. 두 수를 받아 더한 값을 반환하는 메서드 작성
|
|
12. 세 수 중 최댓값을 반환하는 메서드
|
|
13. 숫자를 받아 절댓값을 반환하는 메서드
|
|
14. 문자열을 받아 길이를 반환하는 메서드
|
|
15. 원의 반지름을 받아 넓이를 계산하는 메서드
|
|
16. 나이를 받아 성인/미성년자 판별 메서드
|
|
17. 문자열과 반복 횟수를 받아 반복 출력하는 메서드
|
|
18. BMI 계산 메서드 작성
|
|
19. 비밀번호 길이가 8자 이상인지 검사하는 메서드
|
|
20. 윤년 여부를 판단하는 메서드
|
|
|
|
---
|
|
|
|
## 3단계: 배열(Array)과 반복 (초급 → 중급)
|
|
|
|
**목표**: 컬렉션과 반복 처리에 익숙해지기
|
|
|
|
21. 숫자 배열의 합을 구하기
|
|
22. 배열에서 최댓값, 최솟값 찾기
|
|
23. 배열 요소를 하나씩 출력 (each 사용)
|
|
24. 배열의 짝수만 출력
|
|
25. 문자열 배열에서 글자 수가 5 이상인 단어만 출력
|
|
26. 배열 요소를 모두 대문자로 변환
|
|
27. 배열에서 특정 값이 있는지 검사
|
|
28. 배열의 평균값 구하기
|
|
29. 중복 제거된 배열 만들기
|
|
30. 배열을 오름차순/내림차순 정렬
|
|
|
|
---
|
|
|
|
## 4단계: 해시(Hash) 다루기 (중급 초입)
|
|
|
|
**목표**: 키-값 구조 이해
|
|
|
|
31. 사람의 이름과 나이를 해시로 표현
|
|
32. 해시에서 특정 키의 값 출력
|
|
33. 모든 키와 값을 `"이름: 나이"` 형식으로 출력
|
|
34. 가장 나이가 많은 사람 찾기
|
|
35. 점수 해시에서 평균 점수 계산
|
|
36. 해시에 새로운 요소 추가
|
|
37. 해시에서 특정 조건(나이 ≥ 30)인 항목만 출력
|
|
38. 해시 키 목록만 배열로 추출
|
|
39. 해시 값 목록만 배열로 추출
|
|
40. 단어 빈도수 계산 프로그램
|
|
|
|
---
|
|
|
|
## 5단계: 블록과 Enumerable (중급)
|
|
|
|
**목표**: 루비스러운 코드 작성
|
|
|
|
41. `map`을 사용해 배열의 제곱값 배열 생성
|
|
42. `select`로 조건에 맞는 값 필터링
|
|
43. `reject`로 특정 조건 제거
|
|
44. `reduce`로 배열 합계 계산
|
|
45. 문자열 배열을 하나의 문자열로 합치기
|
|
46. 배열에서 가장 긴 문자열 찾기
|
|
47. 해시를 배열로 변환
|
|
48. 배열을 해시로 변환 (index → 값)
|
|
49. `each_with_index` 사용
|
|
50. 사용자 정의 메서드에 블록 전달하기
|
|
|
|
---
|
|
|
|
## 6단계: 문자열 처리 (중급)
|
|
|
|
**목표**: 텍스트 처리 감각 익히기
|
|
|
|
51. 문자열에서 모음 개수 세기
|
|
52. 문자열 뒤집기
|
|
53. 특정 문자 제거
|
|
54. 공백 기준으로 단어 분리
|
|
55. 단어 수 세기
|
|
56. 문자열이 회문인지 검사
|
|
57. 이메일 형식 간단 검증
|
|
58. 파일명에서 확장자 추출
|
|
59. snake_case → camelCase 변환
|
|
60. 문자열 압축 (aaabb → a3b2)
|
|
|
|
---
|
|
|
|
## 7단계: 객체지향 기초 (중급)
|
|
|
|
**목표**: 클래스와 객체 개념 이해
|
|
|
|
61. Person 클래스 정의 (이름, 나이)
|
|
62. 인스턴스 메서드 작성
|
|
63. 생성자(`initialize`) 사용
|
|
64. 접근자(`attr_accessor`) 사용
|
|
65. 나이 증가 메서드
|
|
66. 여러 Person 객체를 배열로 관리
|
|
67. 클래스 메서드 작성
|
|
68. 간단한 BankAccount 클래스
|
|
69. 입금/출금 기능 구현
|
|
70. 잔액 부족 예외 처리
|
|
|