# 루비 연습 문제 ## 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. 잔액 부족 예외 처리