[백준] 2523번 별 찍기 - 13

[백준] 2523번 별 찍기 - 13

출처: [백준] 2523번 별 찍기 - 13


시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 21128 14779 13815 71.252%

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.


입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.


출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.


예제 입력 1

1
3

예제 출력 1

1
2
3
4
5
*
**
***
**
*

힌트


출처


알고리즘 분류


시간 제한


풀이


소스코드

1
2
3
4
5
6
7
8
9
10
11
import sys

input = sys.stdin.readline

N = int(input())

for i in range(1, N + 1):
print('*' * i)
for i in reversed(range(1, N)):
print('*' * i)

[백준] 2522번 별 찍기 - 12

[백준] 2522번 별 찍기 - 12

출처: [백준] 2522번 별 찍기 - 12


시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 11072 9348 8753 85.479%

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.


입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.


출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.


예제 입력 1

1
3

예제 출력 1

1
2
3
4
5
  *
**
***
**
*

힌트


출처


알고리즘 분류


시간 제한


풀이


소스코드

1
2
3
4
5
6
7
8
9
10
11
import sys

input = sys.stdin.readline

N = int(input())

for i in range(1, N + 1):
print(' ' * (N - i) + '*' * i)
for i in reversed(range(1, N)):
print(' ' * (N - i) + '*' * i)

[백준] 2446번 별 찍기 - 9

[백준] 2446번 별 찍기 - 9

출처: [백준] 2446번 별 찍기 - 9


시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 33081 18703 17182 57.652%

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.


입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.


출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.


예제 입력 1

1
5

예제 출력 1

1
2
3
4
5
6
7
8
9
*********
*******
*****
***
*
***
*****
*******
*********

힌트


출처


알고리즘 분류


시간 제한


풀이


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
import sys

input = sys.stdin.readline

N = int(input())

for i in reversed(range(1, N + 1)):
print(' ' * (N - i) + "*" * (2 * i - 1))

for i in range(2, N + 1):
print(' ' * (N - i) + "*" * (2 * i - 1))

[백준] 2444번 별 찍기 - 7

[백준] 2444번 별 찍기 - 7

출처: [백준] 2444번 별 찍기 - 7


시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 18668 13189 12075 72.992%

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.


입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.


출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.


예제 입력 1

1
5

예제 출력 1

1
2
3
4
5
6
7
8
9
    *
***
*****
*******
*********
*******
*****
***
*

힌트


출처


알고리즘 분류


시간 제한


풀이


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
import sys

input = sys.stdin.readline

N = int(input())

for i in range(1, N + 1):
print(' ' * (N - i) + '*' * (2 * i - 1))

for i in reversed(range(1, N)):
print(' ' * (N - i) + '*' * (2 * i - 1))

[백준] 2445번 별 찍기 - 8

[백준] 2445번 별 찍기 - 8

출처: [백준] 2445번 별 찍기 - 8


시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 18262 13350 12206 73.846%

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.


입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.


출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.


예제 입력 1

1
5

예제 출력 1

1
2
3
4
5
6
7
8
9
*        *
** **
*** ***
**** ****
**********
**** ****
*** ***
** **
* *

힌트


출처


알고리즘 분류


시간 제한


풀이


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
import sys

input = sys.stdin.readline

N = int(input())

for i in reversed(range(1, N)):
print('*' * (N - i) + ' ' * (2 * i) + '*' * (N - i))

for i in range(N):
print('*' * (N - i) + ' ' * (2 * i) + '*' * (N - i))

[백준] 2443번 별 찍기 - 6

[백준] 2443번 별 찍기 - 6

출처: [백준] 2443번 별 찍기 - 6


시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 16915 12444 11585 75.174%

문제

첫째 줄에는 별 2×N-1개, 둘째 줄에는 별 2×N-3개, …, N번째 줄에는 별 1개를 찍는 문제

별은 가운데를 기준으로 대칭이어야 한다.


입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.


출력

첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.


예제 입력 1

1
5

예제 출력 1

1
2
3
4
5
*********
*******
*****
***
*

힌트


출처


알고리즘 분류


시간 제한


풀이


소스코드

1
2
3
4
5
6
7
8
9
import sys

input = sys.stdin.readline

N = int(input())

for i in reversed(range(1, N + 1)):
print(' ' * (N - i) + '*' * (2 * i - 1))

[백준] 2442번 별 찍기 - 5

[백준] 2442번 별 찍기 - 5

출처: [백준] 2442번 별 찍기 - 5


시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 31653 17941 16137 57.227%

문제

첫째 줄에는 별 1개, 둘째 줄에는 별 3개, …, N번째 줄에는 별 2×N-1개를 찍는 문제

별은 가운데를 기준으로 대칭이어야 한다.


입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.


출력

첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.


예제 입력 1

1
5

예제 출력 1

1
2
3
4
5
    *
***
*****
*******
*********

힌트


출처


알고리즘 분류


시간 제한


풀이


소스코드

1
2
3
4
5
6
7
8
9
import sys

input = sys.stdin.readline

N = int(input())

for i in range(1, N + 1):
print(' ' * (N - i) + '*' * (2 * i - 1))

2021년 4월 17일 토요일 주간 IT 뉴스 - 네이버와 카카오 "

개요

이번 한 주간에 네이버와 카카오의 분야를 막론하고 몸집 불리는 소식에 대한 기사들을 많이 읽었다.

이 두 SW회사는 무슨 플랫폼에 인수와 투자를 하고 있는지 간단히 정리해보자.


이커머스

네이버는 지난해 10월 패션 플랫폼 스타트업 브랜디에 100억원 규모 투자를 했다.

  • 2014년 12월 설립된 브랜디는 여성 패션 플랫폼 ‘브랜디’, 남성패션 플랫폼 ‘하이버’를 비롯해 상품포장, 배송, 고객 응대까지 처리해주는 올인원 풀필먼트(통합물류대행) 패션 서비스 ‘헬피’를 운영하고 있다.

네이버는 브랜디 투자를 계기로 동대문 패션 클러스터 활성화에 자사 역량을 접목하고 도소매상 온라인 판로 개척, 풀필먼트, 정보기술(IT) 인프라 제공 등에서 영향력을 확대하고 있다.

카카오는 최근 ‘카카오스타일’을 운영하는 카카오커머스의 스타일 사업부문을 인적분할해 패션 플랫폼 ‘지그재그’를 운영하는 크로키닷컴과 합병한다고 밝혔다. 올 7월 출범하는 합병 법인은 카카오 자회사로 편입되고 대표는 크로키닷컴 서정훈 대표가 맡는다. 합병 법인은 지그재그가 보유한 빅데이터와 카카오의 기술력·사업 역량 등을 결합해 경쟁력 있는 사업 기반을 갖추고 신규 사업기회를 발굴해나갈 예정이다.

  • 크로키닷컴이 2015년 출시한 지그재그는 4000곳이 넘는 온라인 쇼핑몰과 패션 브랜드를 모아서 제공하는 모바일 서비스로, 올해 거래액 1조원 규모가 예상될 만큼 성장성이 유망한 플랫폼으로 평가받는다.

합병법인은 글로벌도 넘보고 있습니다. 카카오는 ‘내수용 기업’이라는 꼬리표를 떼지 못하고 있습니다. 카카오 배재현 수석부사장(CIO)은 “카카오가 보유한 글로벌 콘텐츠·팬덤의 영향력과 시너지를 통해 향후 물류 접근성이 용이한 일본, 중국 등 아시아 지역으로 사업을 확장, 글로벌 패션 플랫폼으로 거듭나길 기대한다”고 말했습니다. 기대대로 사업이 흘러간다면 카카오의 숙원사업, ‘해외 공략’이 가능해지는 것 뿐만 아니라 한계가 있어 보이던 커머스 사업의 판을 카톡이 아니라 글로벌로 넓힐 수 있다.

업계 관계자는 “플랫폼 인수와 투자로 많은 돈이 오가고 있는데 패션만큼 유행과 트렌드에 민감한 분야도 없다”면서 “지금 자리를 잡은 플랫폼을 잘 끌고 가기 위해선 지속적 투자와 디자이너 발굴이 더욱 중요하다”고 말했다.

카카오·네이버 ‘패션’에 거액 투자한 이유…이커머스 성장 : 네이버 뉴스 (naver.com)

[넘버스]지그재그 품은 카카오, 해외로 가는 ‘신의 한 수’ 될까 : 네이버 뉴스 (naver.com)


콘텐츠

국내 콘텐트 강자 네이버와 카카오가 차례로 북미 웹툰·웹소설 플랫폼을 인수하며 본격 지식재산권(IP) 전쟁에 나섰다. 글로벌 진출을 염원하던 두 기업이 콘텐트를 앞세워 세계 최대 엔터테인먼트&미디어(E&M) 시장인 미국에서 맞붙는 모양새다.

네이버와 카카오가 북미시장에서 검증을 마친 IP 플랫폼을 사들이고 있다. 국내 IP로 글로벌 히트를 친 ‘스위트홈(네이버웹툰·넷플릭스)’, ‘승리호(카카오엔터테인먼트·넷플릭스)’를 넘어 마블이나 트와일라잇처럼 세계 시장에서 통할 ‘글로벌 IP’를 발굴하려는 시도다.

  • 네이버는 지난 1월 세계 최대 웹소설 플랫폼 ‘왓패드’를 약 6533억원에 인수했다. 왓패드엔 글로벌 독자 9000만 명, 500만 명의 창작자, 10억편의 작품이 있다. 네이버의 목표는 왓패드에서 ‘똘똘한’ IP를 발굴하고, 영상 자회사 스튜디오N과 시너지 확대다.
  • 카카오는 최근 북미 웹소설 플랫폼 ‘래디쉬’와 웹툰 플랫폼 인수를 추진 중이다. 래디쉬 인수가는 약 4000억원으로 추정된다. 월 사용자가 70만명으로 왓패드에 비해 소규모지만 높은 수익성으로 월 매출 30억원에 달하는 알짜 플랫폼이다. 또 다른 북미 웹툰 플랫폼 ‘타파스 미디어’ 지분도 40%가량 보유 중이다.

북미서 웹툰 전쟁

두 회사 인수기업의 면면을 보면 전략의 차이가 보인다.

왓패드는 웹소설계의 유튜브다. 아마추어 작가가 자유롭게 작품을 올리고, 독자에게 선택을 많이 받으면 히트작이 된다. 대부분 무료 작품이란 점까지, 네이버 도전만화와 비슷하다. 누구나 들어올 수 있게 판을 깔고 소비자 선택을 지켜보는 네이버의 플랫폼 전략과 닮았다. 네이버가 여기에 광고, 미리보기, IP 사업 등 그간 쌓아온 수익화 노하우를 어떻게 이식할지가 관건이다.

반면 래디쉬는 프로페셔널 작가군단이 데이터 기반으로 ‘히트작’만 골라쓴다. 창업 당시부터 카카오의 ‘기다리면 무료’ 모델을 벤치마킹했다. 인기 많은 작품일수록 연재횟수를 빠르게 늘리는 등 ‘미리보기’에 기꺼이 지갑을 여는 코어 팬덤을 구축하는 데 능하다. 자체 IP(오리지널)에 투자하고 콘텐트 값을 받는 넷플릭스와 유사하다.

양질의 지식재산권(IP) 확보를 위해 IT 업계를 중심으로 ‘IP 전쟁’이 거센 가운데, 국내 웹소설 플랫폼 ‘문피아’ 인수를 놓고 네이버, 카카오, 엔씨소프트의 3파전이 펼쳐질 전망이다.

  • 지난 2002년 인터넷 커뮤니티로 출발한 문피아는 무협소설 콘텐츠에서 강점을 나타내고 있는 웹소설 플랫폼이다.

네이버는 문피아 인수를 위해 국내 한 사모펀드와 컨소시엄을 꾸린 상태다. 이들은 문피아를 지배하고 있는 특수목적법인(문피아투자목적회사)의 지분 확보를 추진하고 있다. 문피아의 기업가치는 3000억원을 상회하는 것으로 알려졌다.

이번 문피아 인수전에는 카카오와 엔씨소프트도 관심을 두고 있는 것으로 전해진다. 특히 엔씨소프트는 현재 문피아의 3대 주주(지분율 6%)로 콜옵션을 행사할 수 있어 강력한 인수 후보군 중 한 곳으로 꼽힌다. 엔씨소프트는 지난해 콘텐츠 자회사 클렙을 설립하고 게임 외 엔터테인먼트 부문 등 콘텐츠 사업에 도전장을 던진 상태다. 국내 콘텐츠 업계 관계자는 “엔씨소프트도 IP 비즈니스 확장을 위해 문피아 인수 희망 의지를 강력하게 드러내고 있다고 전해진다”면서도 “다만 웹 콘텐츠 사업이 약해 네이버와 카카오로 인수가 기울 것이라는 의견이 지배적이다”고 말했다.

플랫폼에 모여든 창작자와 사용자가 많으면 많을수록, 플랫폼 수익도 늘어난다는 걸 누구보다 잘 안다. 어느 쪽이든 콘텐트와 사용자가 많을수록 플랫폼 이익도 커진다.

[단독] 카카오, 북미 최초웹툰 타파스 인수…美서 네이버와 격돌 - 매일경제 (mk.co.kr)

북미서 웹툰 전쟁…유튜브식 네이버, 넷플릭스식 카카오? : 네이버 뉴스 (naver.com)

웹소설 플랫폼 ‘문피아’ 잡아라…네이버·카카오·엔씨 ‘3파전’ : 네이버 뉴스 (naver.com)


스타트업 인수

네이버와 카카오가 유망 스타트업을 인수해 정보기술(IT) 서비스 경쟁력을 높이고 있다.

네이버는 인재 확보를 위해 스타트업을 사들이고 있다. 인수(acquisition)와 고용(hire)의 합성어인 ‘애크하이어(acqhire)’로 불린다. 네이버는 지난해 컴퓨터 비전 스타트업 비닷두(V.DO)를 인수했다. 비닷두 출신은 네이버웹툰의 콘텐츠 경쟁력을 강화하기 위해 여러 웹툰 관련 기술을 고도화하고 있다.
네이버가 2017년 인수한 AI 스타트업 컴퍼니AI도 비슷한 사례다. 컴퍼니AI는 서비스가 아닌 연구형 스타트업이다. 딥러닝 알고리즘과 기계 독해, 자연어 이해, 대화 모델 연구 등의 다양한 기술을 확보했다. 컴퍼니AI 출신 개발자들은 네이버의 AI 플랫폼인 ‘클로바’의 대화형 엔진을 개발하는 데 중요한 역할을 하고 있다.

카카오엔터프라이즈는 클라우드 기반의 라이브 스트리밍 플랫폼인 ‘카카오 i 커넥트 라이브’를 최근 내놨다. 1인 방송, 실시간 온라인 방송, 화상 회의, 웨비나, 라이브커머스까지 모든 생중계 동영상을 쉽게 유통할 수 있는 플랫폼이다. 카카오엔터프라이즈가 지난해 인수한 스타트업인 리모트몬스터의 기술을 활용했다.
카카오페이는 2019년 보험 중개 판매 스타트업 인바이유도 인수했다. 인바이유는 국내외 대형 보험사와 재보험사와 제휴해 다양한 보험 상품을 온라인으로 판매했다. 카카오페이 보험 서비스의 교두보 역할을 맡았다.

네이버·카카오 新사업 질주…비결은 M&A ‘스타트업 군단’ : 네이버 뉴스 (naver.com)

2021년 4월 16일 금요일 IT뉴스

1. 페이스북에 뿔난 35개국 시민단체 “어린이용 인스타가 왠말?”

페이스북에 뿔난 35개국 시민단체 “어린이용 인스타가 왠말?” - Chosunbiz > 국제 > 국제경제

페이스북이 운영하는 사진 전용 소셜미디어(SNS) 인스타그램 로고. /AP 연합뉴스

페이스북이 12세 이하 어린이 전용 인스타그램을 출시하겠다고 밝힌 가운데, 해당 플랫폼이 어린이를 왜곡되고 조작된 환경에 노출시키고 소셜미디어(SNS)에 중독되는 나이를 지금보다 더 낮출 거란 우려에서 각국의 시민단체가 반발하고 나섰다.

스테파니 어트웨이 페이스북 대변인은 “현실은 어린이들도 인터넷에 접속해 있다는 것”이라며 “어린이들도 인터넷을 통해 가족·친구와 시간을 보내기를 원하는 것이 현실이기 때문에, 페이스북은 안전한 환경을 만들어 어린이들을 돕고 싶다”고 했다.


2. 中 바이두, 자율주행 대중교통 버스 시범 운영

中 바이두, 자율주행 대중교통 버스 시범 운영 : 네이버 뉴스 (naver.com)

*바이두의 자율주행 버스 (사진=타이핑양뎬나오왕)*

16일 중국 언론 타이핑양뎬나오왕에 따르면 이번주 중국 충칭시와 바이두가 ‘자율주행 공공 버스 운영 착수 및 스마트 교통 프로젝트 전략적 협력 협약’을 체결했다.

이번 운행을 위해, 바이두의 아폴로 플랫폼은 이미 충칭시가 발행하는 일종의 허가서인 ‘자율주행 대중교통 승객 탑승 테스트 통지서’를 받았으며, 바이두는 이번 자율주행 대중교통 버스 유료 탑승 프로젝트를 통해, 인공지능(AI) 자율주행 대중교통 상용화의 의미있는 진척을 이루게 된다.


3. 카카오·네이버 ‘패션’에 거액 투자한 이유…이커머스 성장

카카오·네이버 ‘패션’에 거액 투자한 이유…이커머스 성장 : 네이버 뉴스 (naver.com)

분야를 막론하고 몸집 불리기에 나선 카카오와 네이버가 이번엔 패션업계에서 맞붙으며, 카카오는 인수·합병(M&A)으로, 네이버는 직접 투자 방식으로 차세대 성장동력으로 주목받는 패션 플랫폼 수혈에 나섰다.

이창영 유안타증권 연구원은 “한국 이커머스 시장은 지난 10년 동안 연평균 21%의 고성장을 하고 있지만 시장 내 이커머스 사업자들은 오히려 성장의 수혜보다 극심한 생존경쟁에 들어갔다”면서 온라인 쇼핑의 마지막 성장 옵션으로 남아있는 패션 플랫폼 진출 배경을 설명했으며, 업계 관계자는 “플랫폼 인수와 투자로 많은 돈이 오가고 있는데 패션만큼 유행과 트렌드에 민감한 분야도 없다”면서 “지금 자리를 잡은 플랫폼을 잘 끌고 가기 위해선 지속적 투자와 디자이너 발굴이 더욱 중요하다”고 말했다.


4. IT업계, 연봉 전쟁 이어 채용 전쟁 막올라

IT업계, 연봉 전쟁 이어 채용 전쟁 막올라 : 네이버 뉴스 (naver.com)

업계에 따르면 15일 라인, 크래프톤, 카카오 등 주요 IT 업체들이 잇따라 채용 공고를 게시했으며, 연봉 인상 경쟁을 벌였던 IT업계가 채용 경쟁에도 속도를 내고 있다. 네이버가 매달 초 경력직을 정기 채용하겠다고 밝힌 데 이어, 라인은 ‘365일 경력직 채용’을 꺼내들고, 신입 채용에서는 채용연계형 인턴과 연 2회 신입 공채를 진행하고, 카카오는 채용연계형 인턴을 뽑아 아직 졸업하지 않은 학생들을 떡잎부터 키우려는 시도도 보인다.


5. 웹소설 플랫폼 ‘문피아’ 잡아라…네이버·카카오·엔씨 ‘3파전’

웹소설 플랫폼 ‘문피아’ 잡아라…네이버·카카오·엔씨 ‘3파전’ : 네이버 뉴스 (naver.com)

*문피아 홈페이지 갈무리 © 뉴스1*

양질의 지식재산권(IP) 확보를 위해 IT 업계를 중심으로 ‘IP 전쟁’이 거센 가운데, 국내 웹소설 플랫폼 ‘문피아’ 인수를 놓고 네이버, 카카오, 엔씨소프트의 3파전이 펼쳐질 전망이다. 게임, 포털 등 IT 업계가 IP 확보에 열을 올리는 이유는 IP가 가진 무궁무진한 부가가치 창출 가능성 때문이다.


6. ‘KT와 동맹’ 뱅크샐러드, 마이데이터 날개 달았다

‘KT와 동맹’ 뱅크샐러드, 마이데이터 날개 달았다 - 팍스넷뉴스 (paxnetnews.com)

16일 투자 업계에 따르면 KT는 최근 뱅크샐러드에 250억원을 투자하면서 주요 주주로 올라섰고, 뱅크샐러드가 국내 최대 통신사 KT와의 ‘동맹’ 통해 마이데이터 사업 전개에 속도를 높인다.

투자 업계 관계자는 “뱅크샐러드가 KT와의 협업 관계를 구축하면서 마이데이터 사업에서 독보적인 경쟁력을 갖게 됐다”며 “KT가 보유한 데이터와 뱅크샐러드의 마이데이터 사업 역량이 결합한다면 혁신 금융 서비스들이 다수 출시돼 시장에서 큰 반향을 일으킬 수 있을 것으로 기대한다”고 말했다.

[프로그래머스] [2020 카카오 인턴] 수식 최대화

[프로그래머스] [2020 카카오 인턴] 수식 최대화

출처: [2020 카카오 인턴] 수식 최대화


문제

IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다.
이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 같은 방식으로 결정하려고 합니다.
해커톤 대회에 참가하는 모든 참가자들에게는 숫자들과 3가지의 연산문자(+, -, *) 만으로 이루어진 연산 수식이 전달되며, 참가자의 미션은 전달받은 수식에 포함된 연산자의 우선순위를 자유롭게 재정의하여 만들 수 있는 가장 큰 숫자를 제출하는 것입니다.
단, 연산자의 우선순위를 새로 정의할 때, 같은 순위의 연산자는 없어야 합니다. 즉, + > - > * 또는 - > * > + 등과 같이 연산자 우선순위를 정의할 수 있으나 +,* > - 또는 * > +,-처럼 2개 이상의 연산자가 동일한 순위를 가지도록 연산자 우선순위를 정의할 수는 없습니다. 수식에 포함된 연산자가 2개라면 정의할 수 있는 연산자 우선순위 조합은 2! = 2가지이며, 연산자가 3개라면 3! = 6가지 조합이 가능합니다.
만약 계산된 결과가 음수라면 해당 숫자의 절댓값으로 변환하여 제출하며 제출한 숫자가 가장 큰 참가자를 우승자로 선정하며, 우승자가 제출한 숫자를 우승상금으로 지급하게 됩니다.

예를 들어, 참가자 중 네오가 아래와 같은 수식을 전달받았다고 가정합니다.

1
"100-200*300-500+20"

일반적으로 수학 및 전산학에서 약속된 연산자 우선순위에 따르면 더하기와 빼기는 서로 동등하며 곱하기는 더하기, 빼기에 비해 우선순위가 높아 * > +,- 로 우선순위가 정의되어 있습니다.
대회 규칙에 따라 + > - > * 또는 - > * > + 등과 같이 연산자 우선순위를 정의할 수 있으나 +,* > - 또는 * > +,- 처럼 2개 이상의 연산자가 동일한 순위를 가지도록 연산자 우선순위를 정의할 수는 없습니다.
수식에 연산자가 3개 주어졌으므로 가능한 연산자 우선순위 조합은 3! = 6가지이며, 그 중 + > - > * 로 연산자 우선순위를 정한다면 결괏값은 22,000원이 됩니다.
반면에 * > + > - 로 연산자 우선순위를 정한다면 수식의 결괏값은 -60,420 이지만, 규칙에 따라 우승 시 상금은 절댓값인 60,420원이 됩니다.

참가자에게 주어진 연산 수식이 담긴 문자열 expression이 매개변수로 주어질 때, 우승 시 받을 수 있는 가장 큰 상금 금액을 return 하도록 solution 함수를 완성해주세요.


제한

  • expression은 길이가 3 이상 100 이하인 문자열입니다.

  • expression은 공백문자, 괄호문자 없이 오로지 숫자와 3가지의 연산자(

    1
    +, -, *

    ) 만으로 이루어진 올바른 중위표기법(연산의 두 대상 사이에 연산기호를 사용하는 방식)으로 표현된 연산식입니다. 잘못된 연산식은 입력으로 주어지지 않습니다.

    • 즉, "402+-561*"처럼 잘못된 수식은 올바른 중위표기법이 아니므로 주어지지 않습니다.
  • expression의 피연산자(operand)는 0 이상 999 이하의 숫자입니다.

    • 즉, "100-2145*458+12"처럼 999를 초과하는 피연산자가 포함된 수식은 입력으로 주어지지 않습니다.
    • "-56+100"처럼 피연산자가 음수인 수식도 입력으로 주어지지 않습니다.
  • expression은 적어도 1개 이상의 연산자를 포함하고 있습니다.

  • 연산자 우선순위를 어떻게 적용하더라도, expression의 중간 계산값과 최종 결괏값은 절댓값이 263 - 1 이하가 되도록 입력이 주어집니다.

  • 같은 연산자끼리는 앞에 있는 것의 우선순위가 더 높습니다.


입출력

expression result
"100-200*300-500+20" 60420
"50*6-3*2" 300

입출력 예 1

* > + > - 로 연산자 우선순위를 정했을 때, 가장 큰 절댓값을 얻을 수 있습니다.
연산 순서는 아래와 같습니다.
100-200*300-500+20
= 100-(200*300)-500+20
= 100-60000-(500+20)
= (100-60000)-520
= (-59900-520)
= -60420
따라서, 우승 시 받을 수 있는 상금은 |-60420| = 60420 입니다.


입출력 예 2

- > * 로 연산자 우선순위를 정했을 때, 가장 큰 절댓값을 얻을 수 있습니다.
연산 순서는 아래와 같습니다.(expression에서 + 연산자는 나타나지 않았으므로, 고려할 필요가 없습니다.)
50*6-3*2
= 50*(6-3)*2
= (50*3)*2
= 150*2
= 300
따라서, 우승 시 받을 수 있는 상금은 300 입니다.


풀이

  • 식에서 사용 된 연산자

소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from itertools import permutations
import re

def solution(expression):
expressions = set(re.findall("\D", expression))
prior = permutations(expressions)
result = []

for op_prior in prior:
temp = re.compile("(\D)").split('' + expression)
for exp in op_prior:
while exp in temp:
idx = temp.index(exp)
temp = temp[:idx - 1] + [str(eval(''.join(temp[idx - 1:idx + 2])))] + temp[idx + 2:]
result.append(abs(int(temp[0])))
return max(result)

'''
if __name__ == "__main__":
expression_list = ["100-200*300-500+20", "50*6-3*2"]
result_list = [60420, 300]

length = len(result_list)

for i in range(length):
answer = solution(expression_list[i])
if answer == result_list[i]:
print('{}번 정답입니다.'.format(i + 1))
else:
print('{}번 실패입니다.'.format(i + 1))
print('{} != {}'.format(answer, result_list[i]))
'''