조동사 + have + 과거분사(modal perfects)

B2 · 중상급조동사

should have, could have, would have는 실제로 일어나지 않은 과거에 대해 말하는 표현이에요. “-았어야 했는데”, “-(으)ㄹ 수도 있었는데”, “-았을 거예요”에 해당해요.

이번 레슨에서 배울 내용

  • should have + 과거분사: 후회나 비판(“-았어야 했어요”, “-(으)ㄹ걸 그랬어요”)
  • could have + 과거분사: 할 수 있었는데 하지 않은 일(“-(으)ㄹ 수도 있었는데”)
  • would have + 과거분사: 상상한 과거의 결과. if와 자주 함께 써요(“-았을 거예요”)
  • shouldn't have: 실제로 해 버린 일에 대한 비판(“-지 말았어야 했어요”)

일어나지 않은 과거를 돌아보기

should have, could have, would have는 늘 “조동사 + have + 과거분사”라는 세 부분으로 이루어져요. 조동사마다 뜻이 달라요. 후회나 비판, 놓친 기회, 상상한 결과예요. “You should have called me — I was worried.”(전화했어야지, 걱정했잖아), “I could have helped you, but I didn't know you needed it.”(도와줄 수도 있었는데, 필요한 줄 몰랐어).

한국어는 이런 뜻을 동사 끝의 어미로 나타내요: “전화했어야 했어요”, “도와줄 수도 있었는데”, “더 일찍 왔을 거예요”. 과거를 나타내는 “-았/었-”도 동사 안에 들어가죠. 그래서 영어에서도 동사를 과거형으로 바꾸고 싶어지지만, 영어에서는 조동사 뒤의 have + 과거분사가 과거를 나타내요. “He should apologized”가 아니라 “He should have apologized”예요. 외우기 쉬운 짝: “-았어야 했어요” = should have, “-(으)ㄹ 수도 있었는데” = could have, “-았을 거예요” = would have.

"You should have called me — I was worried."
"I could have helped you, but I didn't know you needed it."

Should have: 후회와 비판

should have는 하지 않은 일에 대한 후회나 어떤 결정에 대한 비판을 나타내요: “He should have apologized sooner.” = “좀 더 일찍 사과했어야 했어요.”

shouldn't have는 반대로, 실제로 일어난 일을 비판해요: “You shouldn't have spent all that money.” = “그 돈을 다 쓰지 말았어야 했어요.”(그런데 다 써 버렸어요.)

have가 없으면 뜻이 달라져요. “You should call me”는 지금이나 앞으로를 위한 조언(“연락하는 게 좋겠어요”)이지 과거에 대한 비판이 아니에요. “시험공부를 더 열심히 할걸 그랬어요”도 과거의 후회라서 “I should study harder”가 아니라 “I should have studied harder.”예요.

한국어 화자가 가장 많이 하는 실수는 had to예요. “-았어야 했어요” 안에 “해야 했다”가 들어 있어서 “You had to tell me”라고 하기 쉬운데, had to는 “(어쩔 수 없이) 해야 했다”는 실제 의무를 말해요. “나한테 말했어야지!”라는 비판은 “You should have told me!”이고, 더 강하게 말하고 싶으면 really를 붙여요: “You really should have told me.”

"He should have apologized sooner."
"You shouldn't have spent all that money."

Could have: 놓친 기회

could have는 과거에 능력이나 기회가 있었지만 쓰지 않은 일을 말해요. 이유와 함께 자주 써요: “We could have won if we'd played better.” = “더 잘했으면 이길 수도 있었는데.”

“-(으)ㄹ 수 있었는데”를 could만으로 옮기지 마세요. could는 have 없이 쓰면 과거의 일반적인 능력(“I could swim at five” = “다섯 살 때 수영할 줄 알았어요”)이나 지금의 제안(“I could help you” = “제가 도와드릴 수 있어요”)이에요. 놓친 기회는 반드시 could have예요.

부정형 couldn't have는 “…할 수 없었을 거예요”라는 뜻이에요: “We couldn't have won without you.” = “여러분이 없었다면 이길 수 없었을 거예요.” 이것도 would have처럼 상상한 과거예요.

could have는 비판이 되기도 해요: “They could have told us sooner.” = “좀 더 일찍 말해 줄 수도 있었잖아요.”

과거에 대한 추측일 때도 있어요: “She could have missed the bus.” = “버스를 놓쳤을 수도 있어요.” 놓친 기회인지 추측인지는 문맥으로 판단해요.

"We could have won if we'd played better."
"They could have told us sooner."

Would have: 상상한 과거

would have는 실제와 다른, 상상 속 과거에 일어났을 일을 말해요. if + had와 함께 쓰는 경우가 많아요: “If I had known, I would have come earlier.” = “알았더라면 더 일찍 왔을 거예요.” 한국어의 “-았더라면 … -았을 거예요” 구조와 잘 맞아요.

조심할 점이 두 가지 있어요. 첫째, if가 있는 쪽에는 had를 쓰고 would have는 다른 쪽에만 써요. “If I would have known”은 미국 구어에서 가끔 들리지만 표준 영어로 보지 않아요. 둘째, “-았을 거예요”는 추측에도 써요(“아마 버스를 놓쳤을 거예요”). 이렇게 실제로 일어났을 거라고 짐작할 때는 would have가 아니라 must have나 probably를 써요: “She must have missed the bus.”

have를 빼면 현재 이야기가 돼요. “I would come earlier”는 “(지금이라면) 더 일찍 올 텐데”라는 뜻이라 과거의 if와 어울리지 않아요.

"If I had known, I would have come earlier."
"I wouldn't have said that if I'd known it would upset you."

실생활 영어 표현

"You shouldn't have worked so late."
"I could have helped you, but I didn't know."
"I wouldn't have believed it if I hadn't seen it myself."
"She could have won the race, but she twisted her ankle."

주의하세요

✗He should apologized sooner.
✓He should have apologized sooner.

“사과했어야 했어요”의 과거를 동사에 붙인 실수예요. 조동사 + have + 과거분사의 have를 빼면 안 돼요.

✗You shouldn't have say that.
✓You shouldn't have said that.

have 뒤에는 동사원형이 아니라 과거분사(said)가 와요.

✗You had to tell me earlier.
✓You should have told me earlier.

“미리 말했어야 했어요”라는 비판은 should have예요. You had to tell me는 “어쩔 수 없이 말해야 했다”는 의무라서 뜻이 달라요.

✗I could help you, but I didn't know you needed it.
✓I could have helped you, but I didn't know you needed it.

“도와줄 수도 있었는데”처럼 놓친 기회는 could have + 과거분사예요. I could help you는 지금의 제안이에요.

✗If I would have known, I would have come earlier.
✓If I had known, I would have come earlier.

“알았더라면”은 If I had known이에요. would have는 결과 쪽에만 써요.

✗If I had known, I would come earlier.
✓If I had known, I would have come earlier.

과거에 대한 상상(“왔을 거예요”)에는 would have + 과거분사가 필요해요. I would come은 현재의 가정이에요.

한국어와 비교해 보기

한국어는 과거를 동사 안의 “-았/었-”으로 나타내요: “사과했어야 했어요”, “그 말은 하지 말았어야 했어요”

영어에서는 조동사 뒤의 동사를 과거형으로 바꾸지 않아요. 과거는 have + 과거분사가 맡아요: “He should have apologized.”, “You shouldn't have said that.” “should apologized”나 “shouldn't have say”는 틀린 형태예요. 세 부분(조동사 + have + 과거분사)을 꼭 갖추세요.

“말했어야 했어요”에는 “해야 했다”가 들어 있어요

그래서 had to로 옮기기 쉽지만, had to는 “실제로 해야만 했다(그리고 대개 했다)”는 의무예요: “I had to work late yesterday.”(어제 야근해야 했어요). 하지 않은 일에 대한 후회나 비판은 should have예요: “You should have told me.”(나한테 말했어야지).

“-았을 거예요”는 상상한 결과(“알았더라면 왔을 거예요”)에도, 과거에 대한 추측(“아마 버스를 놓쳤을 거예요”)에도 써요

영어에서는 둘을 나눠요. 일어나지 않은 상상의 결과는 would have(“I would have come earlier.”), 실제로 일어났을 거라는 짐작은 must have나 probably예요(“She must have missed the bus.”, “She probably missed the bus.”). “She would have missed the bus.”라고 하면 “(만약 …했다면) 놓쳤을 것이다”라는 가정으로 들려요.

“알았더라면 더 일찍 왔을 거예요”처럼 조건과 결과의 어미가 따로 있어요

영어도 두 부분의 형태가 달라요. if 쪽은 과거완료 “If I had known”, 결과 쪽은 “I would have come earlier”예요. 결과의 would have를 if 쪽에도 넣은 “If I would have known”은 대표적인 실수예요.

💡 “-았어야 했어요” = should have + 과거분사. had to나 should + 과거형이 아니에요.

💡 “-(으)ㄹ 수도 있었는데” = could have + 과거분사.

💡 “알았더라면” = If I had known, “왔을 거예요” = would have come.

💡 상상한 결과 = would have, 과거에 대한 짐작(“아마 …했을 거예요”) = must have.

실생활 상황: 가지 못한 파티 이야기

"You should have come to the party, it was great!"

"I know, I wish I had. I could have come, but I was too tired."

"That's a shame. You would have loved the food."

"Next time I definitely will."

연습

연습 문제 1 · 바른 문장을 고르세요 – 과거에 대한 후회나 비판

Choose the correct sentence — regret or criticism about the past.

연습 문제 2 · 바른 문장을 고르세요 – 할 수 있었지만 하지 않은 일

Choose the correct sentence — unrealized past ability.

연습 문제 3 · 바른 문장을 고르세요 – 상상한 과거

Choose the correct sentence — a hypothetical past.

연습 문제 4 · 알맞은 부정문을 고르세요

Choose the correct negative.

연습 문제 5 · 바른 문장을 고르세요 – 실제로 한 일에 대한 비판

Choose the correct sentence — criticism of a past action that did happen.

연습 문제 6 · 알맞은 답을 고르세요

Which modal perfect expresses regret about something NOT done?

연습 문제 7 · 바른 문장을 고르세요

Choose the correct sentence.

연습 문제 8 · 바른 문장을 고르세요

Choose the correct sentence.

연습 문제 9 · 괄호 안의 단어로 문장을 완성하세요

Complete (regret): 'I ___ (should/study) harder for that exam.'

연습 문제 10 · 괄호 안의 단어로 문장을 완성하세요

Complete (unrealized ability): 'She ___ (could/win) the race, but she twisted her ankle.'

연습 문제 11 · 알맞은 그룹으로 나누세요

should have called
shouldn't have called
could have won
couldn't have won
would have helped
wouldn't have helped

0 / 6 분류 완료

연습 문제 12 · 자주 하는 실수: “-았어야 했어요”를 had to로 옮기기

Korean: “저한테 미리 말했어야 했어요.” (a reproach) Which English sentence is correct?

빠른 도전

다양한 유형의 다섯 문제로 배운 내용을 확인해 보세요.

문제 1 / 5

점수: 0/0

Choose the correct sentence.

배운 내용

  • should have(“-았어야 했어요”)는 후회나 비판이고, shouldn't have는 실제로 한 일을 비판해요. had to와 헷갈리지 마세요.
  • could have(“-(으)ㄹ 수도 있었는데”)는 쓰지 않은 가능성이에요.
  • would have(“-았을 거예요”)는 상상한 결과이고, if + had와 자주 함께 써요. 과거에 대한 짐작은 must have예요.
  • 세 표현 모두 have + 과거분사가 필요해요. 과거는 동사가 아니라 have가 나타내요(should said, could win이 아니에요).
  • if가 있는 쪽에는 would have가 아니라 had를 써요: If I had known…
이 카테고리의 레슨 모두 보기