should have p.p. / could have p.p. / would have p.p.란? 과거를 향한 후회와 추측의 조동사 완벽 정리
should have p.p., could have p.p., would have p.p.는 모두 "조동사 + have + 과거분사(p.p.)" 형태로 쓰여 이미 지나가 버린 과거의 일에 대해 말할 때 사용하는 표현이다. 이 구조를 흔히 "modal perfect(조동사 완료형)"라고 부른다. 세 표현 모두 형태는 비슷하지만 의미는 각각 후회(should have), 가능성/능력(could have), 추측/조건(would have)으로 뚜렷이 구분되므로, 이 차이를 정확히 이해하는 것이 이번 챕터의 핵심이다.
핵심 공식
주어 + should/could/would + have + 과거분사(p.p.)
이 구조의 가장 중요한 특징은 현재 시점에서 과거를 돌아보며 말한다는 점이다. 즉, 지금 이 순간 화자가 과거의 사건에 대해 판단·후회·추측을 하고 있는 것이며, 그 과거 사건은 이미 끝나서 바꿀 수 없다는 뉘앙스를 담고 있다.
1. should have p.p. — "~했어야 했는데 (안 했다)"
의미와 용법
should have p.p.는 과거에 하지 않은 일에 대한 후회나, 과거에 한 일에 대한 비판/유감을 나타낸다. 우리말로는 "~했어야 했는데 (하지 못했다)" 또는 "~하지 말았어야 했는데 (해버렸다)"로 해석된다.
| 형태 | 의미 | 예문 |
|---|---|---|
| should have + p.p. | ~했어야 했는데 안 했다 (후회) | I should have studied harder. (더 열심히 공부했어야 했는데.) |
| should not have + p.p. | ~하지 말았어야 했는데 했다 (후회) | I shouldn't have eaten so much. (그렇게 많이 먹지 말았어야 했는데.) |
예문 (한국어 해석 포함)
- You should have called me before coming. (오기 전에 나한테 전화했어야지.) — 실제로는 전화하지 않아서 문제가 생겼음을 암시
- She should have told the truth from the beginning. (그녀는 처음부터 사실을 말했어야 했다.) — 실제로는 거짓말을 함
- We shouldn't have trusted him. (우리는 그를 믿지 말았어야 했다.) — 실제로는 믿었고 결과가 나빴음
- He should have finished the report by now. (그는 지금쯤 보고서를 끝냈어야 하는데.) — 완료되지 않았을 가능성에 대한 비판/추측
should have p.p.의 두 가지 뉘앙스
- 도덕적/의무적 후회: 그렇게 했어야 할 의무나 책임이 있었는데 안 함
- You should have apologized to her. (그녀에게 사과했어야 했다.)
- 기대에 대한 추측(현재완료 추측): 지금쯤 어떤 상태일 것이라는 기대와 다름
- The package should have arrived by now, but it hasn't. (지금쯤 도착했어야 하는데 아직 안 왔다.)
Tip:
should have p.p.는 문장 안에 직접적으로 "그런데 하지 않았다"는 말이 없어도, 암묵적으로 반대 사실(실제로는 안 했음)을 내포한다는 걸 꼭 기억하자. 이것이 가정법 과거완료(if I had studied...)와 의미적으로 연결되는 지점이다.
2. could have p.p. — "~할 수 있었는데 (안 했다)" / "~했을 수도 있다"
의미와 용법
could have p.p.는 크게 두 가지 의미로 쓰인다.
| 의미 | 설명 | 예문 |
|---|---|---|
| ① 과거의 실현되지 않은 능력/가능성 | ~할 수 있었는데 하지 않았다 (아쉬움, 때로는 비난) | I could have won the race, but I fell. (달릴 수 있었는데 넘어졌다.) |
| ② 과거 사실에 대한 불확실한 추측 | ~했을 수도 있다 (확실하지 않음) | She could have missed the bus. (버스를 놓쳤을 수도 있다.) |
예문 (한국어 해석 포함)
- I could have helped you if you had asked. (네가 부탁했다면 도와줄 수 있었을 텐데.)
- He could have been a professional athlete. (그는 프로 운동선수가 될 수도 있었다.) — 실제로는 되지 않음
- They could have taken a taxi instead of walking. (걸어가지 않고 택시를 탈 수도 있었는데.)
- Someone could have stolen your bike if you hadn't locked it. (자물쇠를 안 채웠다면 누군가 자전거를 훔쳐갔을 수도 있다.)
- It could have been worse. (더 나빠질 수도 있었다 → 그나마 다행이다라는 뉘앙스)
should have vs could have 비교
이 둘은 매우 자주 혼동되므로 표로 명확히 비교한다.
| 표현 | 핵심 뉘앙스 | 예문 |
|---|---|---|
| should have p.p. | 의무/당위 + 후회 (해야 했는데 안 함) | You should have locked the door. (문을 잠갔어야 했다 — 의무) |
| could have p.p. | 능력/가능성 (할 수 있었는데 안 함, 비난 없음) | You could have locked the door. (문을 잠글 수도 있었다 — 단순 가능성) |
Tip:
should have는 "해야 마땅했다"는 의무/책임의 뉘앙스가 강하고,could have는 "그럴 능력/기회가 있었다"는 가능성의 뉘앙스가 강하다. 비난의 강도로 보면 should have가 더 직접적이다.
3. would have p.p. — "~했을 것이다" (조건에 따른 과거의 가상 결과)
의미와 용법
would have p.p.는 단독으로 잘 쓰이지 않고, 대부분 가정법 과거완료(if 절) 와 함께 쓰여 "(만약 ~했다면) ~했을 것이다"라는 과거의 가상 결과를 나타낸다.
핵심 공식 (가정법 과거완료)
If + 주어 + had + p.p., 주어 + would have + p.p.
예문 (한국어 해석 포함)
- If I had known about the meeting, I would have attended. (그 회의에 대해 알았다면 참석했을 것이다.) — 실제로는 몰랐고 참석하지 않음
- If she had studied harder, she would have passed the exam. (더 열심히 공부했다면 시험에 합격했을 것이다.) — 실제로는 불합격
- I wouldn't have said that if I had known it would hurt you. (그 말이 널 상처 입힐 줄 알았다면 하지 않았을 것이다.)
- We would have missed the flight if we hadn't hurried. (서두르지 않았다면 비행기를 놓쳤을 것이다.) — 실제로는 서둘러서 안 놓침
if절 없이 쓰이는 경우
문맥상 조건이 생략되기도 한다.
- I would have called you (if I had had your number). (네 번호가 있었다면 전화했을 텐데.)
- He would have loved this movie. ((살아 있었다면/봤다면) 그는 이 영화를 좋아했을 것이다.)
would have vs should have vs could have (가정법 문맥에서)
가정법 과거완료 문장에서 주절의 조동사에 따라 뉘앙스가 달라진다.
| 주절 형태 | 뉘앙스 | 예문 |
|---|---|---|
| would have p.p. | 단순한 가상의 결과 (그랬을 것이다) | If it had rained, we would have stayed home. |
| could have p.p. | 가상의 가능성 (그럴 수 있었을 것이다) | If it had rained, we could have stayed home. |
| should have p.p. | 가상의 의무/당위 (그래야 했을 것이다) | If it had rained, we should have stayed home. |
4. 세 표현 한눈에 비교하기
| 표현 | 우리말 의미 | 핵심 뉘앙스 | 예문 |
|---|---|---|---|
| should have p.p. | ~했어야 했는데 | 후회, 의무 위반 | I should have left earlier. |
| could have p.p. | ~할 수 있었는데 / ~했을 수도 있다 | 실현 안 된 능력, 불확실한 추측 | I could have left earlier. |
| would have p.p. | ~했을 것이다 | 조건에 따른 가상 결과 | I would have left earlier if I had known. |
발음과 축약형 주의
회화와 캐주얼한 글에서는 다음과 같이 축약되는 경우가 많다.
- should have → should've (발음: [ʃʊdəv], "슈드어브"에 가까움)
- could have → could've (발음: [kʊdəv])
- would have → would've (발음: [wʊdəv])
주의: 구어에서 should've, could've, would've가 발음상 "should of", "could of", "would of"처럼 들려서 원어민조차 철자를 틀리는 경우가 있다. "have"를 절대 "of"로 쓰지 않는다는 점을 명확히 기억하자. 이는 문법적으로 완전히 틀린 표현이다.
5. 부정문과 의문문 만들기
부정문
부정은 조동사 뒤에 not을 붙인다.
| 긍정 | 부정 |
|---|---|
| should have p.p. | should not have p.p. (shouldn't have p.p.) |
| could have p.p. | could not have p.p. (couldn't have p.p.) |
| would have p.p. | would not have p.p. (wouldn't have p.p.) |
- You shouldn't have spent all your money. (돈을 다 쓰지 말았어야 했는데.)
- I couldn't have finished it without your help. (네 도움 없이는 끝낼 수 없었을 거야.)
- She wouldn't have agreed even if you had asked nicely. (네가 정중히 부탁했어도 그녀는 동의하지 않았을 것이다.)
의문문
조동사를 주어 앞으로 도치한다.
- Should I have told her the truth? (내가 그녀에게 사실을 말했어야 했을까?)
- Could he have missed the train? (그가 기차를 놓쳤을 수도 있을까?)
- Would you have done the same thing? (너라면 같은 행동을 했을까?)
6. 한국인 학습자가 자주 틀리는 부분
한국어와 영어의 구조적 차이 때문에 한국인 학습자들이 특히 자주 실수하는 지점을 정리한다.
(1) "have + p.p." 대신 "have + 동사원형"을 쓰는 실수
한국어는 "~했어야 했는데"라는 표현을 만들 때 영어의 완료형 구조를 직관적으로 떠올리기 어렵다. 그 결과 다음과 같은 오류가 자주 나온다.
- ❌ I should have go there.
- ⭕ I should have gone there.
Tip:
have뒤에는 반드시 과거분사(p.p.)가 와야 한다.have가 조동사 역할을 하고 있으므로 뒤에 동사원형이 오는 다른 조동사(can, will 등)의 습관을 그대로 적용하면 안 된다.
(2) should have p.p.를 단순 과거시제로 대체하는 실수
한국어에서는 "~했어야 했다"를 그냥 과거형처럼 느끼기 쉬워서, 다음처럼 시제를 단순화하는 오류가 생긴다.
- ❌ I should studied harder. (should 뒤에 동사원형만 쓰거나 시제를 혼동)
- ⭕ I should have studied harder.
또한 should만 쓰면 "지금/미래에 해야 한다"는 뜻이 되어 시제 자체가 달라진다는 점을 명확히 인지해야 한다.
| 표현 | 시제/의미 |
|---|---|
| I should study harder. | (지금부터) 열심히 공부해야 한다 (현재/미래) |
| I should have studied harder. | (과거에) 열심히 공부했어야 했는데 안 했다 (과거에 대한 후회) |
(3) could have p.p.와 was able to를 혼동
한국어 "~할 수 있었다"를 영어로 옮길 때 could와 was able to를 구분하지 않고 쓰는 경우가 많다. 그러나 실제로 성공한 일회성 과거 행동에는 was able to를 쓰고, could have p.p.는 실제로 하지 않은 가상의 능력을 나타낸다는 차이가 있다.
- I was able to finish the project on time. (실제로 제시간에 끝냈다 — 사실)
- I could have finished the project on time (if I had had more help). (도움이 더 있었다면 끝낼 수 있었을 텐데 — 실제로는 못 끝냄)
(4) should have p.p.와 must have p.p.의 혼동
should have p.p.(후회)와 must have p.p.(강한 추측: ~했음이 틀림없다)는 의미가 전혀 다른데, 한국어로는 둘 다 "~했을 것이다" 계열로 번역되어 혼동이 생긴다.
| 표현 | 의미 | 예문 |
|---|---|---|
| must have p.p. | ~했음이 틀림없다 (강한 확신의 추측) | He must have left already. (그는 이미 떠났음이 틀림없다.) |
| should have p.p. | ~했어야 했는데 / ~했을 텐데(기대) | He should have left by now. (지금쯤 떠났어야 하는데.) |
(5) 어순 실수: not의 위치
한국어 어순(SOV)의 영향으로 부정어 위치를 잘못 놓는 경우가 있다.
- ❌ I should have not gone.
- ⭕ I should not have gone. (I shouldn't have gone.)
not은 반드시 조동사(should/could/would) 바로 뒤, have 앞에 위치한다.
(6) 가정법 if절의 시제 불일치
if절에는 had + p.p., 주절에는 would/could/should have + p.p.가 와야 하는데, 한국어 화자는 종종 if절에 would have p.p.를 잘못 넣는 실수를 한다.
- ❌ If I would have known, I would have told you.
- ⭕ If I had known, I would have told you.
Tip: if절에는 절대 would/could/should를 쓰지 않는다. if절은 항상
had + p.p.(가정법 과거완료의 기본 형태)로 고정한다는 규칙을 암기하자.
(7) 관사와 시제 대응에서 오는 부자연스러움
한국어에는 관사가 없기 때문에, 완료형 조동사 문장 안에서도 명사 앞 관사를 누락하는 실수가 흔하다.
- ❌ I should have bought ticket.
- ⭕ I should have bought a ticket. / I should have bought the ticket.
문맥상 특정한 것을 가리키면 정관사 the, 불특정하면 부정관사 a/an을 반드시 챙겨야 한다.
7. 실전 예문 모음 (상황별)
후회 표현 (should have)
- I should have listened to my parents. (부모님 말씀을 들었어야 했는데.)
- We should have booked the tickets earlier. (표를 더 일찍 예매했어야 했는데.)
- You shouldn't have quit your job so suddenly. (그렇게 갑자기 회사를 그만두지 말았어야 했는데.)
실현되지 않은 가능성 (could have)
- I could have gone to the party, but I was too tired. (파티에 갈 수 있었지만 너무 피곤했다.)
- She could have become a great singer. (그녀는 훌륭한 가수가 될 수도 있었다.)
- We could have avoided the traffic if we had left earlier. (더 일찍 출발했다면 교통 체증을 피할 수 있었을 텐데.)
과거 사실에 대한 추측 (could have / must have)
- He could have forgotten about the appointment. (그가 약속을 잊었을 수도 있다.)
- The rumor could have started from a misunderstanding. (그 소문은 오해에서 시작되었을 수도 있다.)
가정법 결과절 (would have)
- If I had had enough money, I would have bought that car. (돈이 충분했다면 그 차를 샀을 것이다.)
- She would have called you if she had had your number. (네 번호가 있었다면 그녀는 전화했을 것이다.)
- They wouldn't have won the game without their captain. (주장이 없었다면 그들은 경기에서 이기지 못했을 것이다.)
8. 관련 구조와의 비교: 가정법 과거완료 전체 그림
should/could/would have p.p.는 결국 가정법 과거완료(Past Perfect Subjunctive) 체계의 일부다. 전체 구조를 정리하면 다음과 같다.
| 절 | 형태 | 예문 |
|---|---|---|
| if절 (조건절) | If + 주어 + had + p.p. | If I had studied |
| 주절 (결과절) | 주어 + would/could/should + have + p.p. | ..., I would have passed. |
혼합 가정법(과거 조건 → 현재 결과)도 함께 알아두면 좋다.
혼합 가정법 공식
If + 주어 + had + p.p. (과거), 주어 + would + 동사원형 (현재)
- If I had studied medicine, I would be a doctor now. (의학을 공부했다면 지금 의사일 텐데.) — 과거의 조건이 현재 상태에 영향을 주는 구조
9. 핵심 요약
should have p.p.= ~했어야 했는데 (안 함) → 후회/의무could have p.p.= ~할 수 있었는데 (안 함) / ~했을 수도 있다 → 실현 안 된 가능성/불확실한 추측would have p.p.= (만약 ~했다면) ~했을 것이다 → 가정법 결과, 가상의 결과- 공통 구조: 조동사 + have + 과거분사(p.p.)
have는 반드시 원형 그대로 쓰고, 뒤에는 과거분사만 온다 (동사원형 X, "of" 표기 X)- if절에는 would/could/should를 절대 쓰지 않고
had + p.p.로 고정한다 - 발음 축약형(should've, could've, would've)에 익숙해지되 철자는 항상 "have"로 정확히 쓴다
학습 팁: 이 세 표현을 완벽히 익히는 가장 좋은 방법은 자신의 과거 경험을 영어로 되짚어보는 연습이다. 오늘 하루를 돌아보며 "오늘 ~했어야 했는데(should have)", "~할 수도 있었는데(could have)", "만약 ~했다면 ~했을 텐데(would have)" 세 문장을 각각 만들어보는 습관을 들이면, 단순 암기가 아니라 실제 사고 과정에서 자연스럽게 이 구조를 사용할 수 있게 된다.