4일차 과제: 나의 특성과 리더십 스타일 탐구하기

나의 이키가이 성격 탐구하기: (500자 이상)

나의 이키가이 성격 결과를 보고, 느낀 점, 궁금한 점 등을 자유롭게 작성해 주세요. (500자 이상)

되게 나의 특성에 맞는다고 느꼈습니다. 1-3일차에서도 말했지만, 방송일을 꿈꿔왔었고, 멋있는 직업이라고 생각했었습니다.

하지만 나에게 특별한 재능은 없다고 느껴서, 진로를 바꾼 경향이 큰데, 창의적은 활동을 소중히 여기고, 과학, 수학을 잘한다고 결과가 나오다보니, 공감을 했던 것 같습니다.

 

내가 좋아하는 일을 해야할까 ? 내가 잘하는 일을 해야할까 ? 에 대해서는 항상 고민이 많았습니다.

저의 결론은 내가 잘하는 일 중에서 좋아하는 분야의 일을 하자 였습니다.

내가 좋아하는 일을 할 때, 나의 능력치는 80인데, 다른 사람들이 100이라면 거기서 오는 슬픔에  제가 좋아하는 일이 싫어하는 일이 되는게 무서웠던 것 같습니다.

 

그렇게 잘하는 분야의 일을 선택하고, 그 분야들 중에서도 내가 흥미를 느끼는 분야를 고르고 나니, 사실 지금은 직업을 고른 것에 대한 후회는 없는 것 같습니다.(내가 정말 잘하는가?에 대해서는 의문이 품어질때는 많지만..ㅋㅋ)

 

그래서 저는 제가 선택한 개발자로서의 길, 개발자 이후로는 PM의 길을 계속해서 공부하며 나아가야겠다고 느낀 검사결과 였던 것 같습니다.

나의 특이점 탐구하기: (각 500자 이상)

여러분만의 독특한 특성에 대한 결과를 알려주세요. 느낀 점은 어떤가요?

"여유로운 정직"


이라는 키워드가 나왔습니다.

키워드가 두 개가 합쳐진 키워드 같은데, 하나는 맞는 것 같고, 다른 하나는 의아했습니다.

 

"여유로운" 이라는 키워드에 대해서 저는 많이 의아했습니다.

제가 생각하기에 저는 불안지수?가 되게 높다고 생각하는 사람입니다. '남들보다 뒤쳐지면 어떡하지?', '미래에는 어떻게 살고 있을까?'라는 생각을 종종 하기때문에 높다고 생각했습니다.

그런데, 여유로운 이라는 키워드를 곰곰히 생각해보니 생각이 조금 바뀌었어요 ㅋㅋ..

그런 불안한 생각들은 누구나 다 할 것 같지만, 그에 대한 생각이 일상을 저해할만큼 생각에 사로잡히지는 않는 것 같아요.

오히려 불안한 생각이 들면 그걸 없애기 위해, 뭘 하지 고민하고, 계획을 세워서 대안을 마련하고 훌훌 털어버리는 것 같아요 ㅋㅋ

그래서 여유로운 키워드도 어울릴 수도 있겠다..? 아닌가 ?  계속 혼동인 상황입니다.

 

"정직" 이라는 키워드는 저를 너무 잘 설명하는 키워드였어요.

사실 인간관계에 있어서 하얀거짓말 제외하고는 거짓말을 되게 싫어하기도 하고,

저 또한 솔직하게 말하는 화법인 것 같아요.

그래서 때로는 솔직함이 독이 될 수도 있다는 말에 너무 공감을 했습니다..ㅎ

일상에서, 공부하며, 다양한 활동을 하며 여러분의 특성이 드러났던 경험을 자세히 작성해보세요.

 

나의 원형 또는 직업 프로필 탐구하기: (500자 이상)

당신이 가장 잘 어울리는 직업 프로필에 대해 어떻게 생각하시나요? 이 일을 하고 있는 여러분의 모습을 구체적으로 상상해 보세요. 어떨 것 같나요?

음 컴퓨터에 관한 직종들은 공감을 하지만, 나머지 직업들은 질문들 중에 다 싫은데 억지로 고를 경우가 꽤 있어서, 기술자가 맞는가에 대한 의문은 있지만,,ㅋㅋ 그래도 희망 분야와 관련된 직업이 나와서 기분은 좋아요..ㅋㅋ

음, 제가 미래의 저의 모습을 상상해보면..

우선 자율 출퇴근을 할 수 있는 회사에 출근하고 싶어요 ㅋㅋ

오전에는 운동이나 취미생활을 조금 하고, 10시-11시 쯤 출근해서 팀원들과 회의도 하고, 회의를 바탕으로 개발도하고,

개발된 것들이 좋은 방향인지 토론도 하면서 하루를 마무리하고싶어요.

그리고 집에 오면, 회사에서 하는 분야와 다른 기술을 혼자 공부하고 하루를 마무리 하고 싶습니다.

나의 리더십 스타일 탐구하기: (각 500자 이상)

 

당신의 4가지 리더십 스타일은 무엇인가요? 4가지 스타일에 대한 특징과 장 단점을 읽고 이에 대한 느낀 점을 자유롭게 작성해 주세요.

민주적 결정, 작업 중심, 거래 목표, 관료적 절차

1. 민주적 결정 vs 독재 리더십

-> 해당 부분에 있어서는 민주적 결정이 베이스가 되어야한다고 생각합니다. 그러나 정말 급박하고, 빠르게 해결해야할 때, 혹은 중요한 결정을 해야할 때는 독재 리더십을 발휘해야한다고 생각하는 편입니다.

2. 작업 중심 vs 사람을 지향

-> 이 부분은 저는 리더로 일할 때는 작업 중심적인 것 같고, 직원으로 일할 때는 사람 지향적인 것 같아요. 그래서 리더 역할을 하게되면, 이부분을 가장 조심해야할 것 같아요. 어떤 일을 하든지 사람이 중요한데 리더의 역할이 부여되면, 작업을 완수해야한다는 생각에 매몰되어서 사람들에게 좋지 못한 인상을 심을 때가 가끔 있다고 생각해요.

3. 거래 목표 vs 변혁적 목표

-> 해당 부분은 제가 이해하기로는, 나무를 보냐, 숲을 보냐의 문제로 느껴져요. 저는 나무를 보는 성향이 나왔다고 보는데, 변혁적 리더십 부분이 부족하구나라고 깨닫게 되네요..

4. 관료적 리더십 vs 유연한 리더십

-> 음 저는 회사가 돌아가기 위해서는, 관료적인 절차가 굉장히 중요하다고 생각되지만, 그 절차가 창의성을 없앤다는 말에 매우 공감하는 편이라 어떤 것이 더 회사에게 좋을까 고민이 되는 것 같아요.

4가지 리더십 스타일 중 여러분과 가장 맞닿아 있는 리더십 스타일은 어떠한 것인가요? 이유는 무엇인가요? 여러분이 경험을 바탕으로 작성해 주세요.

저는 민주적 결정, 작업 지향 두 개가 가장 맞닿아 있다고 느껴요.

프로젝트의 리더를 맡고 있을 때에도, 작업을 완수하기 위해서는 어떻게 계획을 세워야하는지 어떤 방법으로 가야하는지 고민했고, 그 방법들에 대해서는 팀원들과 민주적인 회의를 끝으로 제가 결정하고, 책임지려고 했던 것 같아요. 위에서 작성했듯이, 작업을 지향했기에 목표를 이루었고, 마무리를 잘 하였지만, 팀원들과의 다툼도 있어서 사람을 지향하지 못했던 문제점들이 파악됐던 것 같아요.

 

저는 모든 특성들이 한 쪽으로 치우쳐져있으면 안된다고 생각해요.

그래서 앞으로는 제가 잘하는 특성은, 이후에도 잘할거라고 믿고...ㅋㅋ

부족한 특성들에 대해서 고민하면서, 어떻게 변화해나가야할까 고민하는게 좋은 리더라고 생각해요.

3일차 과제: 열정 사명 직업 천직! 이키가이 교집합 탐구

나의 '열정' 탐구하기:

- 내가 좋아하는 것 : 주어진 과제를 수행하면서 즐거운 시간을 보내고 즐기는 것.

- 내가 잘하는 것 : 컴퓨터와 상호 작용, 관련 지식 업데이트 및 사용, 데이터 또는 정보 분석, 직원 팀 개발 및 구축

- 그에 대한 교집합 -> 나의 열정은? : 예술, 연극, 공예, 무용, 음악, 또는 창의적 글쓰기와 같은 창의적인 활동을 수행하는 것.

1. '내가 잘하는 것'과 '내가 좋아하는 것'에서 가장 나와 비슷하다고 생각하는 부분은 무엇인지 느낀 점과 함께 알려주세요

내가 잘하는 것, 내가 좋아하는 것 둘다 제가 생각하는 것들과 비슷하게 나온 것 같아요.

사실 학창 시절에는, 방송 PD가 너무나도 되고 싶었고, 생기부도 거기에 맞춰서 작성되었어요.

그러나 취업에 대한 걱정과, 이과에 대한 성적이 더 좋아서 이과를 선택하게 되었고, 그 분야가 제가 잘하는 부분인 것도 맞다고 생각해요.

그래서 아마 나의 열정이 창의적인 활동을 하는 것에 초점이 맞춰지지 않았을까 싶어요

2. 어떤 순간이나 경험을 통해 이 열정을 발견하게 되었나요?

나의 열정 → 예술, 연극, 공예, 무용, 음악 또는 창의적 글쓰기와 같은 창의적인 활동을 수행합니다.

음, 학창시절의 방송 PD를 꿈꿔왔을때의 순간으로 돌아가야할 것 같아요.

TV, 영화, 뮤지컬 등등 대중매체에 관련된 것들은 정말 너무나도 좋아했던 것 같아요.

애들이 애니메이션 볼 때, 드라마를 봤던 것 같고 그렇게 시간을 많이 쓰다보니, 자연스레 나도 저런 프로그램

저런 작품을 만들고 싶다라고 생각이 들었어요.

그리고 정말 그런 프로그램들을 동아리 활동을 통해서 만들 때, 오는 쾌감이 너무 컸던 것 같아요..ㅎㅎ

내가 기발한 아이디어로 그리고 나의 시간과 노력이 좋은 작품으로 나타났을때 기뻤어요

3. 이 열정을 통해 경험한 가장 기억에 남는 순간이나 성취는 무엇인가요?

음 방송부 동아리 연합에 들어간 적이 있어요.

그때 연극파트에 들어가서 연극 파트장을 맡았고, 주연배우도 얼떨결에 맡게되었어요

대본을 모두가 같이 모여 작성하면서, 밤도 새보고, 연습하는 과정들이 많이 기억에 남아요.

4. 이 열정이 여러분에게 가져다준 긍정적인 변화나 영향이 있나요?

음.. 현재로서는 긍정적인 영향보다는 부정적?인 영향이 남아있는 것 같아요.

그런 활동들이 너무나 재미있었지만, 너무 스트레스를 받는 공간이기도 했고, 내가 생각보다 창의적이지 않구나.

재능이 없구나 라고 자각하게 되는 순간들이 많았어요.

그리고 인간 관계에 대한 문제도 같이 직면했었구요.

그래서 생기부 모든 것이 신방과를 위해서 작성이 되었었는데, 돌연 컴퓨터공학과를 온 계기가 되기도 했어요..ㅎㅎ

(또 다른 측면으로 보면, 제가 지금 학과에 만족하고 있는데, 컴퓨터공학과를 오게 해준 계기가 된거기도 해서 무조건 부정적이다라고도 못할것같네욯ㅎㅎ..)

나의 '사명' 탐구하기:

- 내가 좋아하는 것 : 주어진 과제를 수행하면서 즐거운 시간을 보내고 즐기는 것.

- 세계에 필요한 것 : 공학 및 기술, 수학, 교통 언어학

- 그에 대한 교집합 -> 나의 사명은? : 이론적이든 기술적이든 수학 또는 과학 문제를 공부하고 이해하고 해결합니다.

1. '내가 좋아하는 것'과 '세상에 필요한 것'의 교집합은 무엇인지 느낀 점과 함께 알려주세요

저는 내가 좋아하는 것에 사실 되게 엉뚱한 문장이 들어가있다고 생각했어요. 좋아하는 것이라고 하면 보통 조금 더 "놀이"에 가까운 문장들이 나타날줄 알았는데, "주어진 과제를 수행한다." 라는 문장이 나와서 당황했어요..ㅋㅋ

 

그런데 지금 생각해보면, 전형적인 한국 커리큘럼을 받은 저로서는 제가 좋아하는 환경이 "주어진 과제"이기도 한 것 같아요..ㅎㅎ

자유롭게 작성해봐라기 보다는 주어진 범위에서의 일들을 잘하는 것 같거든요.

이 점이 다른 한 편으로는, 창의적이지 않다. 자기 주도성이 없다라고 생각돼서 자괴감에 많이 빠진 적도 있지만,

주어진 일들에 대해서 누구보다도 완벽하게 해낸다면 이것도 엄청난 강점이 아닐까 생각하기도해요. 그리고 그런 주어진 환경을 좋아하기도하고요.

그렇다보니 나의 사명의 문장도, 사실 수학, 과학은 어느 정도 정해진 틀 안에서의 문제 해결이다보니 제가 잘하는 분야라고 생각해서 어울린다고 느꼈어요.

2. 이 사명을 발견하게 된 계기나 경험이 있다면 소개해 주세요

음.. 생각보다 이 사명에 대해서 발견한 계기, 경험은 없는 것 같아요.. 생각이 잘 안나네요

3. 이 사명을 통해 당신은 어떤 긍정적인 변화나 기여를 사회에 할 수 있을까요?

사명이라는 단어의 정의가 뭔지 궁금해서 검색해보니 교회용어로는
"주어진 임무. 받은 명령. 하나님께서 특별히 맡기신 거룩한 책무"  이더라고요..

근데 사실 제가 사명에 대해 크게 영향을 받는가는 잘 모르겠어요. 저에게 우선순위가 다른 것보다는 낮다라는 생각이 들어요.

4. 이 사명을 실현시키기 위해 필수적으로 갖추어야 할 스킬 혹은 지식, 자세는 무엇일까요?

3번의 답변과 연관지어서, 내 사명에 대해 고민해보려면, 나에 대한 탐구가 더 필요할 것 같아요.

나의 '직업' 탐구하기:

- 내가 잘하는 것 : 컴퓨터와 상호 작용, 관련 지식 업데이트 및 사용, 데이터 또는 정보 분석, 직원 팀 개발 및 구축

- 내가 할 수 있는 것, 돈이 되는 것 : 솔직, 정직, 신뢰할 수 있음, 대표단

- 그에 대한 교집합 -> 나의 직업은? : 내 가치에 따라 결정을 내리고 내 마음을 따릅니다.

1. '내가 잘하는 것'과 '돈이 되는 것'의 교집합으로 당신이 생각하는 이상적인 직업은 무엇인가요?

PM 역할인 것 같아요. 컴퓨터 공학 관련 일을 하면서도, 대표로 결정을 내릴 수 있는 직업이라고 생각해요.

2. 직업이 여러분의 전공과 일치하나요? 다르다면 그 이유는 무엇일까요?

일치해요. 사실 학창시절에는 절대 나오지 않는 학과였는데, 대학교를 이쪽 분야로 오고, 일도 이쪽 분야를 하다보니, 선택지로 나오면 더 끌리는게 생겨서 나올수밖에 없었던 것 같아요.

3. 그 직업을 선택했을 때 얻을 수 있는 만족감과 가치는 무엇일까요?

음 성취감이 가장 큰 것 같아요.

사실 저는 제가 안정감을 좋아한다고 생각해서, 안정적인 직장을 구하자라고 생각했어요. 어떤 일을 하는지는 상관이 없이요.

근데 이게 생각보다 삶이 지루하더라고요. "워라밸만 맞으면, 재미는 라이프에서 찾아야지" 라는 생각이 되게 오만했던 것 같아요.

 

그래서 제가 무엇을 할 때, 좋아하는지 되게 오랜 시간 고민을 했어요. 현재까지의 결론은, 제가 새로운 것을 배우고, 배운 것을 적용해나가며 문제를 해결할 때 상당한 카타르시스(?)를 느끼는 것 같아요. 그 부분에 있어서 컴퓨터 공학 쪽의 일들은 끊임없이 배우고, 몰입하고, 일의 재미를 얻을 수 있겠다고 확신했던 것 같아요

4. 이 직업을 가진다면, 5년 후에 여러분은 어떻게 성장했을 거라 짐작하나요?

계속해서 성장해나가면서, 끊임없이 배우는 자세로 5년이 지나있을 것 같아요.

IT업계에서 가장 크게 느끼는 점 중 하나는, 나이가 많다고해서 무조건 지식이 많은건 아닌 것 같아요.

끊임없이 노력하고, 배우려는 자세로 임한다면, 저도 나중에는 누군가에게 훌륭한 멘토이고 싶어요.

나의 '천직' 탐구하기:

- 세계에 필요한 것 : 공학 및 기술, 수학, 교통 언어학

- 내가 할 수 있는 것, 돈이 되는 것 : 솔직, 정직, 신뢰할 수 있음, 대표단

- 그에 대한 교집합 -> 나의 천직은? : 컴퓨터 및 수학, 예술, 디자인, 엔터테인먼트, 스포츠 및 미디어, 건축 및 엔지니어링

1. '세상에 필요한 것'과 '돈이 되는 것'의 교집합에서 당신의 천직을 찾아보고 알려주세요.

음.. 이건 찾아보고라기보다, 제가 한 번 생각했었던 직업인데 여기에 어울리는 것 같아서 적어보려구요

"스포츠 데이터 분석가" 인 것 같아요. 스포츠랑 컴퓨터가 같이 보여서 ㅎㅎ 제가 야구에 엄청 빠져있을 때

야구선수가 되기는 힘드니 데이터 분석가로서 활동하면 어떨까 라는 고민도 해봤는데 여기에 어울리는 답변 같아요

2. 천직에 나온 결과가 평소 하고 싶던 일의 결과 일치하나요? 다르다면 그 이유는 무엇일까요?

평소하고 하고 싶었던 일은 아니지만, 한 때 꿈꿨던 직업이에요

3. 천직을 통해 당신이 성취하고 싶은 목표는 무엇인가요?

내가 좋아하는 팀에서 일하게 된다면, 나의 분석으로 통해 팀의 성적에 기여할 수 있다면, 너무 재밌게 일할 것 같아요 ㅋㅋ

4. 천직을 업으로 삼게 된다면, 나만이 특별히 세상에 기여할 수 있는 부분은 무엇이 있을까요?

음.. 진짜 특출난 분석가가 된다면, 국가대표팀의 분석가로 일하면 국가를 위해서도 일하는 상상까지 해보게되네요 ㅎ

2일차 과제: 세상이 필요로 하는 것, 돈 벌 수 있는 방법 찾기

'세상이 필요로 하는 것'에 대해서 생각하고 아래의 질문에 답해보세요.

1. 최근에 감동받은 뉴스나 이야기 중에서, 세상이 꼭 알아야 할 내용은 무엇인가요?

요즘 아시안게임을 무척이나 열심히 챙겨봤는데, 안세영 선수 경기 대회 내용이 감동적이었어요..🇰🇷

1세트 마지막에 다리가 다쳐서 기권하는건가 싶었는데, 포기하지않고 경기를 마무리해서 금메달을 따더라고요..

요즘 쉽게 포기하고, 쉽게 낙담했던 것 같은데, 나한테도 저런 독기? 의지?가 있나 돌아보게 된 것 같아요

2. 만약 당신이 대통령이 되어 하루를 지휘할 수 있다면, 어떤 일을 먼저 시작하실 건가요?

음 어떤 걸 한다기보다는 이전에 있었던 것처럼 잘 유지하고 싶어요..

개인적인 일에 권력을 이용해볼까? 아니면 정치적인 면에서 이용해볼까 했지만,, 

실제 현실이라고 생각하고 진지하게 고민해보니 "인수인계"를 받는게 제일 먼저이지 않을까 싶네요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

만약 5년동안 할 수 있다면, 제가 생각하기에 잘못된 방향으로 가고있는 과업부터 손보려고할것같아요 ㅋㅋ

3. 만약 마법사라면, 세상에서 바꾸고 싶은 한 가지는 무엇인가요? 한 가지가 아니어도 좋아요.

이건 개인적인 단점들을 고치는데 마법을 부리고 싶네요 ㅎㅎ

한국은행의 돈 만드는 기계를 우리집으로 가져온다는 말도 안되는 생각을 해봤어요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 행복하겠다..

4. 기부천사가 될 수 있다면, 혹은 기부를 꼭 해야만 한다면? 어디에 기부하실 건가요?

저는 고아원에 기부할 것 같아요.

어린 친구들이 돈을 걱정해야한다는게 되게 싫은 것 같아요

'수익’을 낼 수 있다는 관점에서 아래의 질문에 답해보세요.

1. 지금까지 배운 지식 중 가장 유용하고 쓸모 있다고 생각하는 것은 무엇인가요? 

컴퓨터공학과에서 들었던 전공 수업들이 유용하고 쓸모있다고 느끼는게 요즘인 것 같아요.

그 이유는?

취준을 하면서, 백엔드 공부를 할 때에는, 학교가 왜이렇게 이론적인것만 가르치고, 실무적인걸 안 가르쳐줬지? 하면서 의문이 많았었어요..

그런데 시간이 지날수록, 프로젝트 같은 것들을 경험하면서 CS 지식을 내가 알고 있기 때문에 결정하는데 있어서 많은 도움을 준다고 느끼는 것 같아요

2. 대학 생활을 하면서 느끼는 사회, 경제, 환경 문제 중에서 가장 우리나라에서 해결해야 할 중요한 문제는 무엇이라고 생각하나요?

저출산 문제라고 생각해요.

이게 해결되지 않는다면, 그에 맞게 준비도 해야할 것 같구요.

3. 만약 세상에서 한가지 물건(유, 무형 무관)만 팔 수 있다면, 그것은 무엇이고 왜 이를 선택하셨나요? 

신박한 답변이 안 떠올라서..ㅋㅋㅋ

진짜 팔고싶은건,아이패드에요 ㅋㅋ (요즘 쓸모가 없어져서,, 당근 고민중이랔ㅋㅋ

4. 5년 전에 비해서 갑자기 수요가 많아진 일은 뭐가 있을까요?

아무래도 IT 직종이지 않을까요?

저는 의도하고 컴공을 온 건, 아니지만,, 그때는 전화기가 가장 높은 학과들이었는데,

코로나가 터지고, 군대를 갔다오니,, IT 학과 입결이 엄청 높아진 것 같아요..

학과 입결과 더불어 희망 직종 순위도 많이 높아졌구요

5. 앞으로는 어떤 일이 각광받을 것이라 생각하나요?그리고 개인을 위한 직종들이 유명해질것같아요.

4번의 질문과 연관되어서, IT 직종이 각광 받을 것 같아요.

2주차 1일차 과제

내가 잘하는 것'에 대해 생각하고 아래의 질문에 답해보세요.

1. 어린 시절부터 자주 들었던 칭찬들이 있다면 어떤 것일까요?

  • 기억력이 좋다.
    • 단순 암기같은걸 하면, 거의 1등했던것 같아요 ㅋㅋ
  • 꼼꼼하다.
    • 약간의 완벽주의 성향이 있지않나.. 싶은..
    • 그런데 또, 너무 완벽하려고 하다가 지쳐서 포기하는 적도 있었어요..
  • 운동신경이 좋다..?
    • 체육 관련해서는 다 우수했던 것 같은데,, 요즘은 운동을 안 하니, 과거의 나에 대한 칭찬이네요

2. 친구들이 당신과 함께 공모전에 나가고 싶다고 한다면, 그 이유는 무엇일까요?

음,, 제가 맡은 파트에 대해서는 끝까지 완수하려는 경향이 있어서 그 점을 높이 사지 않았을까 싶어요..

3. 만약 K-POP 아이돌 그룹에서 특별한 포지션을 맡게 된다면? 가장 잘할 수 있는 역할은 어떤 걸까요?

어느 정도 계획하고, 1:1로 고민상담도 해줘야하고, 강단이 필요할때는 강단이 있다고 생각해서, 리더 역할이 가장 잘 맞을 것 같아요.

4. 특별히 노력을 많이 하지 않았는데도, 결과가 잘 나왔던 것들이 있나요? ‘아, 나 이거 좀 찢었다…’

면접같은걸 보면, 결과가 좋았던 것 같아요. 준비를 열심히 하기도하고, 말로 임기응변에 능했어서..?

대신 글재주가 없어서 면접까지 가는게 어렵다라는 단점이 있네요 ㅋㅋ

 

'내가 좋아하는 것'에 대해 생각하고 아래의 질문에 답해보세요.

1. 당신만의 가상의 유튜브 채널을 개설한다면, 어떤 컨텐츠를 만들겠나요?

최근에 혼자 해외여행을 가봤는데, 현지인들도 만나고, 친구가 되어서, 그 나라에 대해서 친구들이 소개시켜주고, 너무 재밌는 여행이었어요

그래서 저는 개설한다면, 혼자 해외여행가는 브이로그 채널을 만들고 싶어요.

2. 만약 한 편의 영화나 드라마의 주인공이 된다면 어떤 이야기 속에서 활약하고 싶은가요?

요즘은 아무래도 일자리에 관심이 많고, 성공에 관련된 이야기에 초점이 맞춰져 있어서 그런지,, 이태원 클라쓰처럼 밑바닥부터 시작해서 성공신화를 그려내는 주인공 같은 스토리가 나였으면 좋겠다라고 생각하는것같아요.

3. 마지막으로 진짜로 웃었던 순간은 언제인가요? 그때 상황을 기억하신다면 공유해 주세요.

웃었던 순간이라기보다는 너무 행복했던 순간은, 2달전에 갔던 해외여행 기간이 너무 행복했던 순간이었어요.

4. 박찬호처럼 투머치 토커가 될 수 있는 분야가 있나요?

방송 PD가 꿈이었어서, 좋아하는 배우, 좋아하는 드라마 이야기 나오면 갑자기 말이 많아지는 것 같아요.. ㅋㅋ

그리고 좋아하는 가수 이야기나오면 또 투머치 토커가 되는 것 같습니다..

5. 매일 하는 활동 중 가장 기대되는 것은 무엇인가요?

하루 일과를 정리하고 침대에 눕기 직전의 순간이요..ㅋㅋ

그걸 위해 매트리스를 좋은 걸 사고, 누울때의 쾌감이란..

 1. 이 프로그램에 참여하게 된 가장 큰 이유는 무엇인가요? (300자 이상)


이 프로그램에 참여하는 가장 큰 이유는 이력서와 포트폴리오 작성을 위한 도움을 얻기 위해서입니다. 저의 강점을 파악하고 이를 어떻게 어필할 수 있는지에 대한 고찰이 필요하다고 느껴서 이 프로그램에 신청했습니다. 제가 가지고 있는 강점을 잘 알지 못하고, 이를 표현하는데 어려움이 있다고 생각해, 이 문제를 해결하고 싶었습니다.

자소서를 작성하려고 시도할 때, 첫 문장부터 막혀버리는 경험이 자주 있었습니다. 그래서 먼저 저에 대해 깊게 고민하고, 더 자세히 탐구하고자 이 프로젝트에 참여했습니다. 이를 통해 저만의 독특한 강점과 경험을 찾아내고, 이를 강조하는 시간이 되었으면 좋겠습니다.

 2. 이 프로그램을 통해 한 달 뒤 자신의 변화된 모습을 상상해 봅니다. 한 달 뒤 모습의 그림을 그려본다면, 어떠한 모습일까요? (300자 이상)


1번과 연결된 답변으로, 저에 대해 많은 탐구의 시간을 가지고, 저의 강점을 알게되고, 그것을 잘 어필할 수 있는 제가 되었으면 좋겠습니다. 또한, 제 강점을 어필하기 위해서 어떤 부분에서 노력해야되고, 공부해야하는지 앞으로의 방향성을 아는 제가 되었으면 좋겠습니다.

그래서 한 달 뒤의 모습을 그려보면, 저만의 강점을 무기로 제가 원하는, 혹은 제가 나아가야할 곳을 알고, 자신감있게 도전하는 제가 되었으면합니다.

  • Golas of Normalization
    1. each relation scheme is in good form
    2. the decomposition is a lossless-join decomposition
    3. preferably, the decomposition should be dependency preserving.

이전 글에서 배웠던 closure of functional dependency 에 대한 예를 보자

cf. reflexivity, augmentation, transitivity, union, decomposition, pseudotransitivity

 

ex ) R = { A, B, C, G, H, I } 

F = { A->B, A->C, CG->H, CG->I, B->H } 가 있다고 할때

 

F+를 몇 개 더 구해보자

A->H >> A->B 이고 B->H 이므로 transitive 속성으로 A->H 인 것을 추가적으로 알 수 있다.

AG->I >> A->C 이므로 augmentation 속성으로 AG->CG 이고 따라서 CG->I 이므로 transitivity속성으로 AG->I인 것도 알 수 있다.

CG->HI >> CG->I 의 augmentation 속성으로 CG->CGI 인것을 알 수 있고 CG->H 는 augmentation 속성으로 CGI->HI 인 것도 알 수 있다. 따라서 CG->CGI , CGI->HI 이므로 transitivity 속성을 이용해 CG->Hi 인것까지 구해낼 수 있다.

 

F+를 구하는 알고리즘을 간략하게 말하면 우선 reflexivity 와 augmentation의 속성들을 다 찾아서 더한 후에

transitivity의 속성을 원래 F와 추가된 속성에서 찾아내서 더이상의 f+에 덜할 것이 없을때까지 반복문을 돌리는 것이다.

attribute가 n개 라면 2^2n의 개수가 나올수 있어 알고리즘 수행시간은 O(2^n)이다.

 

이때까지 했던 것은 "Closure of Functional Dependency" 였다. 이제 "Closure of Attribute Sets"에 대해서 알아보자.

 

attribute set이 a 라고 한다면 a로 부터 도달할 수 있는 모든 것들을 a+라고 한다.

예) R = { A,B,C} // F = {A->B, B->C}라고 한다면 A+는 {A,B,C} 인 것이다. 

이때 a+가 R가 똑같다면 a 는 그 relation의 key 라고 한다!

 

이것에 대한 알고리즘은 간략하게 말하자면 a 로 부터 도달 가능한 것들을 result라고 하고 a를 먼저 result 에 넣어준다. 반복문을 돌 때 b가 현재 result에 있고 b->r의 관계를 발견한다면 result에 r도 추가시키는 것이다. 이것의 수행시간은 n+n-1+,,+1 = O(n^2) 이다.

 

ex) R = ( A,B,C,G,H,I ), F = { A->B, A->C, CG->H, CG->I, B->H }

(AG)+ 는

1. result = AG

2. result = ABCG ( A->C and A->B )

3. result = ABCGH ( CG->H and CG는 AGBC 에 속한다. )

4. result = ABCGHI ( CG->I and CG는 AGBCH 에 속한다.)

AG는 candidate key 인가 >> super key 는 맞으나 A와 G 각각이 key 가 아니라면 candidate key 의 조건 까지 만족한다.

 

Attribute Closure 를 사용하는 것은 슈퍼 키인지 판단하거나 Functional dependencies를 만족하는지 판단 할 때 사용한다.

 

Lossless-join Decomposition

Lossless-join을 만족시키려면 위의 사진처럼 둘 중 하나의 조건은 만족해야한다.

만약 r( A, B, C, D) 라면 (A,B)//(C,D) 이렇게 는 분해 할 수 없다. 

(A,B)//(A,C,D) -->> 이렇게 decomposition을 하고 A 가 R1 가 R2에서 key의 역할을 하고 있어야한다ㅏ.

첫 번째 분해 시에 (A,B) 와 (B,C) 로 하면 R1과 R2의 교집합인 B이고 B는 R2에 속하기 때문에 Lossless를 보장하고 있다.

추가적으로 FD를 각각의 relation을 join 하지 않고 각각으로 검사가 가능하기 때문에 Dependency preserving 또한 보장된다.

하지만 B->R 이 아닌 상태에서 키의 역할을 하고 있기 때문에 BCNF는 아니다.

 

두 번째 분해는 (A,B) (A,C)로 하면 두 테이블의 교집합인 A가 R1에 속하기 때문에 lossless는 보장한다.

추가적으로 각각의 릴레이션을 조인하지 않고 FD를 검사하는 것은 불가능하기 때문에 Dependency preserving은 보장하지 않는다.

마지막으로 두 relation의 key인 A가 A->R이기 때문에 BCNF는 만족한다.

 

Dependency Preservation

Ri 의 FD 를 Fi 라고 할 때, DP가 보장된다는 것은

위 사진의 조건을 만족한다는 것이다. 즉 각각의 릴레이션에 대한 functional dependency를 모으면 F+가 만들어진다는 것.

만약 DP가 보장이 안된다면 = 이 아닌 ⊆ 의 형태일 것이다.

위의 사진을 설명하자면 JK->L 이므로 JK->JKL 따라서 JK->R 이다. 즉 JK 는 이 릴레이션의 KEY이다.

또한 L->K, JL->JK, JL->JKL의 과정을 거쳐서 JL->R인 것을 확인할 수 있어 JL도 이 릴레이션의 KEY이다. 

KEY = [J,K] 로 L->K의 조건때문에 L 은 KEY가 아닌데 왼쪽에 위치하여 이 릴레이션은 BCNF가 아닌 것을 알 수 있다.

Decomposition을 해야하므로 L->K의 조건으로 a->b 일때 a교집합b 와 R-(b-a)로 분해하면

R1=(J,L) R2=(L,K)로 분해된다. 이때 key 들이 fd의 왼쪽에 위치하고 있기에 BCNF 이지만 조인을 하지 않고서는 FD를 검사할 수 없기 때문에 DP를 만족한다고 볼 수 없다.

따라서 분해 전의 상황을 보면 r(J,K,L) 일때 JK->L L->K 일때  JK->K transitivity 속성을 이용한 것이 아니기때문에 3NF는 만족한다고 볼 수 있다.

 

📌BCNF : lossless 만족, key들은 FD의 왼쪽에 있어야함, DP는 보장되지 못할 수도 있다
📌3NF : lossless 만족, DP 만족, transitivity 속성은 만족하지 않아야함.

OS ch8. deadlocks.

 

Deadlock 은 한 프로세스가 특정 resoucre를 소유한 상태에서
다른 프로세스가 소유한 resource를 요청 시에 발생할 수 있다.

위에 적었듯이 프로세스가 하나일 땐 데드락이 발생하지 않습니다. 포괄적으로 말하면 프로세스와 리소스 사이의 관계에 의해 발생 가능하고, 특히 프로세스는 한 개가 아니라 여러 개일 때 일어납니다.

 

📌 Bridge crossing example

데드락을 설명 시에 가장 대표적인 예시입니다. 자동차를 프로세스, 도로를 리소스라고 가정해봅시다.

왼쪽(->)에서 오고있는 자동차는 1차선의 왼쪽을 차지하고 있는 상태이고,

오른쪽(<-)에서 오고있는 자동차는 1차선의 오른쪽을 차지하고 있는 상태입니다. 

이때 서로의 도로(리소스)를 요청하고 있는 상황이고, 이는 두 차 모두 진행될 수 없기 때문에 데드락 상황입니다.

 

Solve this problem

  1. Kill the process - 데드락을 없애기위해 프로세스를 삭제하는 방법
  2. Back the car up ( 후진 ) - preempt the resource and rollback. : 이전 상태중 특정상태로 돌아가는 방법 ( 데드락을 피하기 위해)

+ checkpoint : 라인 바이 라인으로 코드를 수행하는데 특정상태로 돌아가는 것은 매우 힘듭니다. 그래서 특정 상황에서 그때의 상태가 담긴 "context"를 저장해야하고 그 저장하는 공간을 checkpoint 라고 합니다. 따라서, 2번의 방법을 사용하기 위해선 주기적으로 checkpoint를 둬서 context를 저장해야만합니다. 저장을 해놓았다면 그 특정 부분으로 돌아가는 것이 가능합니다.

 

이제 앞으로 배울 간단한 목차에 대해서 설명하면

  1. Deadlock detection : 데드락을 어떻게 검출할 것인지
  2. Deadlock avoidance : 데드락이 예상된다면 데드락을 만나기 전에 회피하는 것
  3. Deadlock recovery : 데드락이 발생했다면 어떻게 없앨것인지.
  4. Deadlock prevention : 데드락을 어떻게 예방할 것인지

등을 배울 예정입니다.

 

그전에

📌 Resource Allocation Graph = (RAG) = 자원할당 그래프

: deadlock이 발생했는지 알아보기 위해 사용.

리소스가 프로세스에게 어떻게 할당되는지 그래프 형태로 그림을 그린 것.

사용이유? deadlock을 쉽게 detect 할 수 있음.

- 동그라미는 Process, 네모는 Resource. 네모 안의 네모는 자원의 수를 나타내는 instance

- Assignment edge : 자원 -> 프로세스 (이 프로세스가 해당 자원을 가지고 있다.)

- Request edge : 프로세스 -> 자원 (이 프로세스가 해당 자원을 요청. 아직 획득하진 못함)

 

>> Deadlock의 필요조건 : "Hold & Wait " : 자원을 하나 가지고 있고 다른 프로세스가 소유한 다른 자원을 달라고 요청하는 상황

 

📌Deadlock Necessary Condition
  1. Mutual exclusion : 오직 하나의 프로세스만 특정 리소스 소유 가능
    • mutual exclusion 을 보장 안한다면 wait 할 상황이 없다..! 그냥 여러 프로세스가 자원 공유해서 쓰면 됨.
  2. Hold and wait : 한 리소스를 hold한 상태에서 이미 다른 프로세스가 소유한 리소스를 요청하면 wait >> hold&wait
  3. No preemption : 먼저 실행된 프로세스가 자발적으로 리소스를 놓아야 다른 프로세스가 사용가능
    • preemption 이 된다면 critical section 에 프로세스 여러 개 들어가는 상황. 1번과 유사하게 데드락 발생 가능성 제로
  4. Circular wait : Hold & wait 의 좁은 개념. 리소스를 wait 하는 상황이 싸이클을 이루는 것

>> 이 조건이 다 만족했다고 데드락이라는 것이 아닌 데드락이 발생하면 이 조건들은 모두 만족해야한다.!!

따라서 1.3번은 당연하고 2번은 4번의 큰 개념이므로 4번이 있는지만 체크하면 데드락의 가능성을 체크할 수 있는 것!!

4번이 성립하지 않으면 데드락은 없다..! but 4번이 있다고해서 무조건 데드락인건 아니궁!!

 

위에서 설명한 " 사이클이 있어도 데드락이 발생하지 않는 경우" 에 대해서 설명드리겠습니다.

데드락의 키워드는 어떠한 경우에도 "indefinetly blocking" 입니다. 어떤 해결책이 없이 계속 데드락이 걸리는 상황이어야하는 것입니다. 

위의 그림은 사이클이 있다고 하더라도 리소스를 가지고 있던 프로세스가 리소스를 release하면 원래는 request edge가 assignment edge 로 바뀌면서 사이클이 사라질 수 있습니다. 즉 상황이 지나면 사이클이 사라지기 때문에 사이클이 있다고 해서 무조건 데드락이 있는 것은 아닙니다.

 

조금 더 자세하게 알아보면, 위의 그림은 리소스의 instance가 여러 개라서 데드락이 발생하지 않았습니다. 

즉, 리소스의 인스턴스 개수에 따라 데드락 발생확률이 다릅니다.

 

>> 만약 1개의 인스턴스를 가지고 있고 싸이클이 있다면 데드락의 필요충분조건입니다.

 

>> 만약 여러 개의 인스턴스를 가지고 있고, 싸이클이 있다면, 필요조건입니다.

 

📌 Methods for Handling Deadlocks

- Deadlock Avoidance : 프로그램을 수행하면 데드락이 발생할 것이 미리 보이면 safe state( 절대 데드락이 발생하지 않을 상태 )까지 프로그램 수행을 멈춤

- Deadlock Prevention : 데드락의 필요조건(4가지)을 없애는 것

- Deadlock Detection, Recover : 데드락이 발생했다면, 데드락이 발생한 것을 탐지(Detection)하고 데드락을 없애기위해 회복절차를 거치는것(recover : kill or rollback)

 

위에서 설명햇던 네가지를 좀더 자세하게 알아보자.

Deadlock Prevention

: 데드락 발생가능 이유를 제거합니다. 즉 위에서 설명한 필요조건을 한 개를 제거합니다.

조건을 없애는게 불가능하면 infeasibility 하다고 하고, 조건을 없앨 수는 있으나 부작용이 생기는 것을 side effect가 발생할 수 있는 조건이라고 명시하겠습니다. 그러면 데드락의 필요조건 네 가지에 대해 살펴봅시다.

  1. Mutual exclusion 
    • mutual exclusion을 없애면 race condition이 발생할 수도 있습니다. 즉 불가능한 조건이므로 " infeasibility " 입니다.
  2. Hold and wait
    • 자원을 다른 프로세스가 소유하지 않았을때만 요청을 할 수 있게 하면 됩니다. 그렇게 된다면 request edge 가 바로 assignment edge가 됩니다. 
    • 위의 방식으로 진행하게 되면 낮은 자원 이용률을 야기시키는 " side effect " 가 발생합니다.
      • 예 ) p1 이 r1,r2를 요청하고 싶어합니다. 이때 p2 가 r2를 사용중이라면 p1 은 r1 에게도 r2에게도 요청신호를 보낼 수 없게 되어 자원 이용률이 떨어지는 것입니다. 동시에 p1은 그 어떤 자원도 쓰고 있지 않기때문에 "starvation" 현상도 일어날 수 있습니다.
  3. No preemption
    • cpu에서는 preemption 이 가능하나, 프린터는 preemption이 된다면 출력 결과물이 이상하게 출력될 것이다. 즉 infeasible 하다고 볼 수 있다.
  4. Circular wait : Hold & wait 의 좁은 개념. 리소스를 wait 하는 상황이 싸이클을 이루는 것
    • 모든 리소스에 우선순위를 매겨서 순서대로만 요청할 수 있도록 한다. 이와같이 리소스 타입에 ordering을 보장하면 circular wait 이 발생할 일이 없다.
      • 예 ) r1 - r2 즉 r1을 먼저 요청해야한다고 가정하자. p1 이 r1을 소유하고 그 다음에 r2를 소유 요청을 할 수 있다. 이때 p1이 r1을 소유한 상태에서 p2는 r1 요청을 보내도 기다려야하고 r1을 먼저 요청한 후 r2를 요청해야하기때문에 r2로는 아예 요청 신호조차 보낼 수 없다.
    • 2번과 마찬가지로 리소스를 활용할 확률이 떨어지기 때문에 side effect로 resource utilization 이 떨어진다고 볼 수 잇다
Deadlock Avoidance

가정 : 리소스 타입별 리소스 요구량의 최대의 개수가 몇 개인지 알고 있어야한다. 왜냐하면 요청 개수 보다 이용가능한 리소스의 개수가 많다면 그때는 절대 데드락이 일어나지 않는 safe state에 머물기때문에 deadlock avoidance를 할 이유가 없어지기 때문이다.

따라서 우리는 resource-allocation state 를 알고 있어야한다. 여기에는 이용가능한 자원의수, 할당된 자원의 수, 최대 요청 개수에 관련된 정보가 있다.

 

목표 : 프로세스가 안전하지 못한 상태로 진입하지 않도록 보장하는 것. >> 안전하지 못한 상태이면 데드락의 가능성이 생기기 때문

unsafe state : # of requests <= # of available resources.

 

기본 로직 : 프로세스 수행 시퀀스를 정해 안전한 상태를 만족하도록 하는 것.

 

다실 말하자면, 프로세스의 수행 순서를 정하는 것이 핵심이다. 안전한 순서라고 함은 할당된 자원과 추가적으로 요구된 자원이 가용한 자원보다 적거나 같으면 된다. 이때 먼저 수행하고 있던 프로세스가 종료되면 리소스를 반환한다. 종료되는 프로세스가 증가할수록 이용가능한 자원은 증가하게되고 그럴수록 안전한 상태를 유지하는 확률이 높아진다.

  Maximum needs Current needs # of request
P0 10 5 5
P1 4 2 2
P2 9 2 7

이용가능한 자원의 개수가 12개라고 해보자 현재 사용중인 자원의 수는 5+2+2 = 9 개 이므로 이용가능한 자원의 수는 => 3개이다.

이용가능한 자원의 수보다 요청 개수가 작아야하므로  P1을 먼저 수행해야 하는 것이다.

이렇게 되면 현재 이용하고 있는 자원의 수는 11개로 12개보다 작기 때문에 데드락에 걸리지않는다. 이때 P0,P2는 stop 상태여야한다. 

언제까지 ?? p1이 종료될때까지!!

이후 p1의 종료되고 쓰던 자원들을 다 반환 하면 이용중인 자원의수는 5+2 = 7개 로 5개의 자원이 추가로 이용가능하기에 p0 에게 먼저 할당. p2는 stop >> p0 terminate >> p2 에게 할당.

즉 프로세스가 종료되면서 자원들을 반환하기때문에 안전한 순서라고 함은 요청 개수가 작은 프로세스를 먼저 수행하고 나머지 프로세스들은 대기하고 있는 것이다. 이후 자원을 할당받은 프로세스가 종료되고 자원을 반환하면 대기하고 있던 프로세스 중 요청개수가 적은 프로세스에게 할당하는 순서로 진행된다.

 

이처럼 자원의 개수가 데드락을 결정하는데 중요한 요소이다. 이때 자원의 개수에 따라 조금은 다르게 적용해야한다.

1. single instance of resource type : 모든 리소스 타입이 한개라면 사이클이 있다면 바로 데드락이기 때문에 데드락 탐지가 매우 용이하게 적용된다. RAG 만 이용하면된다.

2. multiple instance of resource type : 인스턴스 개수가 여러개라면 사이클이 발생해도 데드락이 발생하지 않을 수 있어서 

    Banker's Algorithm을 사용할 것이다.

+  Banker's Algorithm : 위에서 설명했던 안전한 상태를 만족시키는 순서를 만드는게 핵심입니다. 즉, 리소스를 적게 요구하는 프로세스를 먼저 실행하는 것. 시간이 지날수록 리소스 수가 많아지니까. 

 

이용가능한 자원의 수가 1/2/0 인데 이 숫자보다 작게 요청개수를 가진 프로세스는 프로세스 2 이다 (1/1/0) 이므로.

따라서 프로세스2에게 먼저 할당한다. 이후에 프로세스가 종료되고 자원을 반환하면 2/3/0 이 된다.

( 이용가능한 자원의 숫자에 need 자원의 수는 더할 필요 없다. 어차피 available - need + need 이기 때문에..)

 

가능한 프로세스 넘버가 작은 순서대로 먼저 실행하지만 요청개수가 이용가능한 자원의 수보다 많다면 그 다음 프로세스로 넘어가는것.

따라서 프로세스 2 -> 프로세스 3 -> 프로세스 4 -> 프로세스 1 순서로 수행될 것이다.

 

Deadlock Detection

single instance 에서는 사이클 생기면 데드락 발생

multiple instance  에서

avoidance 에서의 need는 미래의 리소스 요청 개수였다면  need = MAX - allocation

여기서는 need는 현재 실제 요청값을 나타낸다. 왜냐하면 detection은 현재 데드락이 발생했는지 보는 것이기 때문.

need = real requests6

 

Deadlock Recovelry

1. kill the process - 사이클이 없어질때까지

  • 어떤 프로세스를 종료시킬지?
    • 관련 모든 프로세스를 종료
    • step by step 으로 사이클이 안보일대까지 종료 ( 우선순위 or. 얼마나 많은 리소스를 추가적으로 요구할건지)

2.  checkpoint & rollback

check point : 문맥을 저장하는 곳. 체크포인트로만 롤백 가능.

'INHA UNIVERSITY 수업 > 오퍼레이팅시스템(OS)' 카테고리의 다른 글

[운영체제] Monitors  (0) 2022.04.30

https://www.acmicpc.net/problem/9093

 

9093번: 단어 뒤집기

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는

www.acmicpc.net

이 문제는 티스토리에 올린 글에서 두 개의 유형을 짜집기해서 금방 풀었습니다.

https://ruo10102.tistory.com/6?category=1007186 

 

[BOJ] 10828번 스택

https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고,..

ruo10102.tistory.com

위의 글에서 배운 [::-1] 을 이용하여 문자열을 뒤집어서 출력이 가능하게 하였고,

 

https://ruo10102.tistory.com/6?category=1007186 

 

[BOJ] 10828번 스택

https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고,..

ruo10102.tistory.com

위의 글에서 배운 input 대신 sys.stdin.readline() 을 통해 출력시간을 줄이려고 노력했습니다.

 

import sys

num = int(input()) #test case는 input으로 받아도 상관 없다.
for _ in range(num):  # for문의 값을 이용하지 않을 때는 underbar를 이용하자.
    a = sys.stdin.readline().split()   #입력 받은 값을 공백으로 분리한다. i am happy 라면 ['i', 'am', 'happy']
    for i in a:
        print(i[::-1], end=' ')  #[::-1]를 통해 값들의 순서를 뒤집고 end=' ' 로 개행문자를 띄어쓰기로 바꾸었다.
        #['i', 'ma', 'yppah']

다른 사람의 코드를 한 번 살펴보았다..!

import sys

for i in range(int(sys.stdin.readline())):
   
    word = sys.stdin.readline()[::-1].split()
    word.reverse()
    
    # " ".join(list) 로 단어들을 이어 붙임 
    print( ' '.join(word))

이 분의 코드는 먼저 모든 단어들을 뒤집고 공백으로 나누고 시작했다

즉 " i am happy " 라면

['yppah', 'ma', 'i'] 이렇게 말이다.

이후에 list 를 reverse하면

['i', 'ma', 'yppah'] 이런식으로 출력이 가능하다.

 

그리고 또 다른 점은 나는 end=' ' 를 이용했지만 

print 문에서 join 문을 이용하는 것을 확인할 수 있었다.

 

Join 은 무슨 기능일까?

한 마디로 문자열을 합치는 기능 !!

 

>> ''.join(리스트)

>> '구분자'.join(리스트)

join 함수는 매개변수로 들어온 리스트에 있는 요소 하나하나를 합쳐서 하나의 문자열로 바꾸어 반환하는 함수입니다.

- ''.join(리스트)
''.join(리스트)를 이용하면 매개변수로 들어온 ['a', 'b', 'c'] 이런 식의 리스트를 'abc'의 문자열로 합쳐서 반환해주는 함수인 것입니다.

- '구분자'.join(리스트)
'구분자'.join(리스트)를 이용하면 리스트의 값과 값 사이에 '구분자'에 들어온 구분자를 넣어서 하나의 문자열로 합쳐줍니다.
'_'.join(['a', 'b', 'c']) 라 하면 "a_b_c" 와 같은 형태로 문자열을 만들어서 반환해 줍니다.

'백준' 카테고리의 다른 글

[BOJ] 10828번 스택  (0) 2022.05.02
[BOJ] 23080번 스키테일 암호  (0) 2022.05.01

+ Recent posts