대한민국을 비롯한 대부분의 나라에서는 터널 내에서의 차선 변경을 법률로 금하고 있다. 조금만 관찰력이 있는 학생이라면 터널 내부에서는 차선이 파선이 아닌 실선으로 되어 있다는 것을 알고 있을 것이다. 이는 차선을 변경할 수 없음을 말하는 것이고, 따라서 터널 내부에서의 추월은 불가능하다.
소문난 명콤비 경찰 대근이와 영식이가 추월하는 차량을 잡기 위해 한 터널에 투입되었다. 대근이는 터널의 입구에, 영식이는 터널의 출구에 각각 잠복하고, 대근이는 차가 터널에 들어가는 순서대로, 영식이는 차가 터널에서 나오는 순서대로 각각 차량 번호를 적어 두었다.
N개의 차량이 지나간 후, 대근이와 영식이는 자신들이 적어 둔 차량 번호의 목록을 보고, 터널 내부에서 반드시 추월을 했을 것으로 여겨지는 차들이 몇 대 있다는 것을 알게 되었다. 대근이와 영식이를 도와 이를 구하는 프로그램을 작성해 보자.
입력
입력은 총 2N+1개의 줄로 이루어져 있다. 첫 줄에는 차의 대수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 대근이가 적은 차량 번호 목록이 주어지고, N+2째 줄부터 N개의 줄에는 영식이가 적은 차량 번호 목록이 주어진다. 각 차량 번호는 6글자 이상 8글자 이하의 문자열로, 영어 대문자(‘A’-‘Z’)와 숫자(‘0’-‘9’)로만 이루어져 있다.
최근 네이버는 브랜디 등과 협업해 ‘동대문 스마트 물류’ 시스템을 구축해 동대문 패스트패션 경쟁력에 가속을 달아줄 물류 실험을 진행 중이며, 네이버에 따르면 현재 동대문 패션 상품을 판매하는 7만여명의 판매자 가운데 400여명이 브랜디나 신상마켓 등 스타트업과 연계한 ‘동대문 스마트 물류 서비스’를 이용하고 있다.
동대문 스마트 물류 서비스는 도매시장 사입과 포장, 물류의 전 과정을 대행한다. 판매자들은 상품이나 쇼핑몰 관리, 고객대응, 마케팅 등에 집중할 수 있다.
아울러 네이버는 백화점 및 아울렛윈도를 통해 ‘무료 반품 및 서비스’ 실험도 진행 중으로, 사이즈나 컬러 등 교환 반품 니즈가 높은 일부 패션 상품을 대상으로 오는 7월 말까지 무료 반품 서비스를 시범 운영 중이다. 편리한 무료반품 교환 서비스가 실제 매출 및 주문량 증대로도 이어지고 있다는 게 회사 측의 설명이다.
물류센터 화재 및 열악한 근로환경 등으로 논란의 중심에 있는 쿠팡이 이번엔 검색순위 조작과 납품업체 갑질 의혹으로 공정거래위원회에 조사를 받게 됐다.
쿠팡이 애플리케이션(앱)에서 자체브랜드(PB) 상품을 다른 납품업체 상품보다 우선 노출되도록 검색 알고리즘을 조작했다는 혐의를 받는 것으로 알려졌다. 또한 쿠팡이 납품업체에 광고 구매를 강요하고 이를 수용하지 않으면 로켓배송 등 혜택 적용에서 제외했다는 의혹을 확인 중인 것으로 전해진다.
정우는 소문난 걸그룹 덕후이다. 정우의 친구 준석이도 걸그룹을 좋아하지만 이름을 잘 외우지 못한다는 문제가 있었다. 정우는 친구를 위해 걸그룹 개인과 팀의 이름을 검색하여 외우게 하는 퀴즈 프로그램을 만들고자 한다.
입력
첫 번째 줄에는 총 입력 받을 걸그룹의 수 N(0 < N < 100)과 맞혀야 할 문제의 수 M(0 < M < 100)을 입력받는다.
두 번째 줄부터는 각 걸그룹마다 팀의 이름, 걸그룹의 인원 수, 멤버의 이름을 한 줄씩 차례대로 입력받는다. 팀과 멤버의 이름은 최대 100글자이며, 모든 글자는 알파벳 소문자이다. 하나의 걸그룹이나 서로 다른 두 걸그룹에 이름이 같은 두 멤버가 있는 경우는 없다.
그 다음 줄부터는 M개의 퀴즈를 입력받는다. 각각의 퀴즈는 두 줄로 이루어져 있으며, 팀의 이름이나 멤버의 이름이 첫 줄에 주어지고 퀴즈의 종류를 나타내는 0 또는 1이 두 번째 줄에 주어진다. 퀴즈의 종류가 0일 경우 팀의 이름이 주어지며, 1일 경우 멤버의 이름이 주어진다.
출력
첫 번째 줄부터 차례대로 퀴즈에 대한 답을 출력한다. 퀴즈의 종류가 0일 경우 해당 팀에 속한 멤버의 이름을 사전순으로 한 줄에 한 명씩 출력한다. 퀴즈의 종류가 1일 경우 해당 멤버가 속한 팀의 이름을 출력한다.
3 4 twice 9 jihyo dahyeon mina momo chaeyoung jeongyeon tzuyu sana nayeon blackpink 4 jisu lisa rose jenny redvelvet 5 wendy irene seulgi yeri joy sana 1 wendy 1 twice 0 rose 1
예제 출력 1
1 2 3 4 5 6 7 8 9 10 11 12
twice redvelvet chaeyoung dahyeon jeongyeon jihyo mina momo nayeon sana tzuyu blackpink
Team = {} for _ inrange(N): team_name = input().rstrip() Team[team_name] = [] members = int(input()) for _ inrange(members): Team[team_name].append(input().rstrip())
for _ inrange(M): name = input().rstrip() flag = int(input()) if flag: # 팀 이름만 출력 for team, member in Team.items(): if name in member: print(team) else: # 멤버 전체 사전순 출력 print('\n'.join(sorted(Team[name])))
다들 문제 제목을 보고 요즘 가장 핫한 영화를 생각했겠지만 이 이야기는 LUL(League Us Legends) 게임에서 아이언(Iron) 티어에 있는 형동이의 슬픈 이야기이다. LUL에서 티어는 게임 실력을 판가름할 수 있는 지표이다. 그중 아이언 티어는 가장 낮은 단계에 위치해 있다. 친구인 강엽이와 건홍이에게 “Ironman”이라며 게임을 못한다고 놀림당하던 형동이는 꼭 아이언 티어에서 벗어나겠다고 결심했다. 하지만 형동이는 자신의 실력으로 절대 아이언(Iron) 티어에서 벗어나지 못하는 것을 알고 있다. LUL은 두 명의 플레이어가 같이 팀이 되어 하는 게임이기 때문에 자신이 못해도 게임에서 이길 수 있고 자신이 잘해도 게임은 질 수 있다. 형동이는 게임은 못하지만 머리가 매우 똑똑하여 LUL 게임을 해킹하여서 몇몇 플레이어와 같이 게임을 하게 되면 게임의 승패가 어떻게 되는지 알게 되었다. 하지만 해킹을 통하여 알아내지 못한 플레이어와 같이 게임을 하는 경우 형동이가 매우 못하기 때문에 같은 팀원이 아무리 잘해도 반드시 진다.
위와 같은 경우에서 “JIHOON”과 같이 게임을 하는 경우 20점(W = 20)을 획득하는 반면에 “GANGYEOP”이나 “MINSUNG”과 같이 게임 하는 경우 경우 15점(L = 15)을 잃게 된다. 뿐만 아니라, 해킹을 통해 알지 내지 못한 플레이어를 만나게 되는 경우 형동이가 매우 못하여 지기 때문에 15점을 잃게 된다. (단, 계속 지더라도 점수는 0점 밑으로 떨어지지 않는다.)
형동이가 N번에 게임을 통해서 아이언 티어에서 탈출한 경우 형동이는 “I AM NOT IRONMAN”이라고 외치지만 탈출하지 못한 경우 “I AM IRONMAN”이라고 외친다.
여기서 아이언 티어를 탈출하기 위해서 100점 (G = 100) 이상이 되어야 했다면 9번째 게임(주황색 사각형)을 하고 아이언 티어를 탈출하였기 때문에 형동이는 “I AM NOT IRONMAN”이라고 외친다. 아이언 티어에서 탈출한 경우 그 이후에 게임은 신경쓰지 않는다.
하지만 만약 탈출하기 위해서 200점(G = 200) 이상이 되어야 한다고 했을 경우 형동이는 아이언 티어를 탈출하지 못했기 때문에 “I AM IRONMAN”이라고 외치게 된다.
과연 형동이는 게임이 끝난 후 어떤 대사를 할 지 우리가 맞춰보자.
입력
첫 번째 줄에는 총 게임 횟수 N과 해킹을 통해 얻은 플레이어 정보의 수 P가 주어진다. (N과 P는 1,000이하의 자연수)
그리고 두 번째 줄에는 이긴 경우 획득 점수 W와 졌을 때 떨어지는 점수 L, 그리고 IRON 티어에서 벗어나기 위한 점수 G가 주어진다. (0 ≤ W, L ≤ 100, 1 ≤ G ≤ 100,000, 이 때, W, L, G는 정수)
그리고 다음 P개의 줄에는 플레이어의 이름과 무조건 이길 수 있는 경우 W, 무조건 지는 경우 L이라는 단어가 플레이어 이름과 쌍으로 나온다.
그리고 그 다음 N개의 줄에는 같이 게임을 하는 플레이어의 이름이 나온다.
플레이어 이름은 반드시 대문자로 나오며 길이는 20이 넘지 않는다.
출력
0점부터 시작하였을 때 형동이가 아이언 티어에서 벗어나지 못한 경우 "I AM IRONMAN!!", 아이언 티어에서 벗어난 경우 “I AM NOT IRONMAN!!”을 출력한다.
예제 입력 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
10 3 20 15 100 JIHOON W GANGYEOP L MINSUNG L JIHOON MYEONGKI GANGYEOP MINSUNG JIHOON JIHOON JIHOON JIHOON JIHOON MINSUNG
예제 출력 1
1
I AM NOT IRONMAN!!
예제 입력 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
10 3 20 15 100 JIHOON W GANGYEOP L MINSUNG L JIHOON GANGYEOP JISUP MINSUNG JIHOON JIHOON MOJI KYUNGMIN SOOHO SEOKGYE
연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, 연종이 하루 동안 본 정수들을 모두 ‘수첩1’에 적어 놓았다. 그것을 바탕으로 그가 진짜 암기왕인지 알아보기 위해, 동규는 연종에게 M개의 질문을 던졌다. 질문의 내용은 “X라는 정수를 오늘 본 적이 있는가?” 이다. 연종은 막힘없이 모두 대답을 했고, 동규는 연종이 봤다고 주장하는 수 들을 ‘수첩2’에 적어 두었다. 집에 돌아온 동규는 답이 맞는지 확인하려 하지만, 연종을 따라다니느라 너무 힘들어서 여러분에게 도움을 요청했다. 동규를 도와주기 위해 ‘수첩2’에 적혀있는 순서대로, 각각의 수에 대하여, ‘수첩1’에 있으면 1을, 없으면 0을 출력하는 프로그램을 작성해보자.
입력
첫째 줄에 테스트케이스의 개수 T가 들어온다. 다음 줄에는 ‘수첩 1’에 적어 놓은 정수의 개수 N(1 ≤ N ≤ 1,000,000)이 입력으로 들어온다. 그 다음 줄에 ‘수첩 1’에 적혀 있는 정수들이 N개 들어온다. 그 다음 줄에는 ‘수첩 2’에 적어 놓은 정수의 개수 M(1 ≤ M ≤ 1,000,000) 이 주어지고, 다음 줄에 ‘수첩 2’에 적어 놓은 정수들이 입력으로 M개 들어온다. 모든 정수들의 범위는 int 로 한다.
출력
‘수첩2’에 적혀있는 M개의 숫자 순서대로, ‘수첩1’에 있으면 1을, 없으면 0을 출력한다.
자연수를 원소로 갖는 공집합이 아닌 두 집합 A와 B가 있다. 이때, 두 집합의 대칭 차집합의 원소의 개수를 출력하는 프로그램을 작성하시오. 두 집합 A와 B가 있을 때, (A-B)와 (B-A)의 합집합을 A와 B의 대칭 차집합이라고 한다.
예를 들어, A = { 1, 2, 4 } 이고, B = { 2, 3, 4, 5, 6 } 라고 할 때, A-B = { 1 } 이고, B-A = { 3, 5, 6 } 이므로, 대칭 차집합의 원소의 개수는 1 + 3 = 4개이다.
입력
첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어진다. 각 집합의 원소의 개수는 200,000을 넘지 않으며, 모든 원소의 값은 100,000,000을 넘지 않는다.
국민대학교에서는 매 학기 시작 전 종합정보시스템에서 수강신청을 한다. 매 수강신청마다 아주 많은 학생들이 몰려 서버에 많은 부하가 가기 때문에, 국민대학교에서는 수강신청 부하 관리 시스템을 도입하기로 결정하였다. 새로운 관리 시스템은 다음과 같은 방식으로 동작한다.
수강신청 버튼이 활성화 된 후, 수강신청 버튼을 조금이라도 빨리 누른 학생이 대기목록에 먼저 들어간다.
이미 대기열에 들어가 있는 상태에서 다시 수강신청 버튼을 누를 경우 대기목록의 맨 뒤로 밀려난다.
잠시 후 수강신청 버튼이 비활성화 되면, 대기목록에서 가장 앞에 있는 학생부터 자동으로 수강신청이 완료되며, 수강 가능 인원이 꽉 찰 경우 나머지 대기목록은 무시하고 수강신청을 종료한다.
위의 표는 최대 수강 가능 인원이 3명인 알고리즘 수업에 대해 6명의 학생이 수강신청을 진행한 모습이다. 버튼이 비활성화 된 후, 먼저 규칙 1을 적용하여 클릭을 2번 이상 한 학생의 중복된 대기목록을 삭제한다. 중복된 목록을 제거한 후, 맨 앞에서부터 최대 수강 가능 인원인 3명을 선정한다. 표의 맨 오른쪽에는 그 최종결과를 나타낸 모습이다. 이와 같은 방법을 이용하여 최종적으로 수강신청에 성공한 인원을 출력하는 프로그램을 작성하시오.
입력
입력 데이터는 표준 입력을 사용한다. 입력은 1개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 과목의 수강 가능 인원 K(1 ≤ K ≤ 100,000)와 학생들이 버튼을 클릭한 순서를 기록한 대기목록의 길이 L(1 ≤ L ≤ 500,000)이 주어진다. 두 번째 줄부터 L개의 줄에는 수강신청을 버튼을 클릭한 학생의 학번이 클릭 순서대로 주어진다. 학번은 8자리의 숫자로 이루어져 있다.
출력
출력은 표준 출력을 사용한다. 입력받은 데이터에 대해, 수강신청 관리 시스템의 규칙을 적용한 후 수강신청에 성공한 인원의 학번을 한 줄에 1개씩 출력한다.