업그레이트 (UpGreate)

- 威武不屈


  • Home

  • Categories

  • About

  • Archives

  • Tags

  • Search

SW Expert Academy - D2_1989

Posted on 2019-08-25 | In ALGORITHM

D2_1989. 초심자의 회문 검사

문제:

  • “level” 과 같이 거꾸로 읽어도 제대로 읽은 것과 같은 문장이나 낱말을 회문(回文, palindrome)이라 한다.
  • 단어를 입력 받아 회문이면 1을 출력하고, 아니라면 0을 출력하는 프로그램을 작성하라.

입력:

  1. 테스트 케이스 T
  2. 각 테스트 케이스 별로 단어가 나온다. (각 단어의 길이는 3 이상 10 이하이다.)

출력:

ex)

#1 5 #2 7 #3 6

생각한 로직:

  • 한 단어만 나오니까 처음 인덱스, 끝 인덱스가 같은지 비교하면서 단어의 전체 길이 절반까지만 돌면 회문인지 확인할수 있다.
    • 짝수 일때,
      • ex(길이는 6 ->0,5 / 1,4 / 2,3 길이의 절반에 해당하는 3개만 확인하면 된다.)
    • 홀수 일때,
      • ex(길이는 5 ->0,4 / 1,3 / 2,2 마지막의 비교는 같은 인덱스 위치를 비교할 필요는 없기 때문에 길이의 절반에 해당하는 2개만 확인하면 된다. )

코딩:

1
2
3
4
5
6
7
8
9
10
11
12
def chkPalindrome(palin,tc,n):
    for i in range(n//2):
        if palin[i] != palin[n-1-i]:
            print("#{} {}".format(tc,0))
            return
    print("#{} {}".format(tc,1))

for tc in range(1,int(input())+1):
    palin = input()
    n=len(palin)
    #펠린드롬(회문)을 확인하는 함수가 필요하다. 확인하고 출력까지 시키자.
    chkPalindrome(palin,tc,n)
Read more »

python_연산자

Posted on 2019-08-24 | In LANGUAGE

연산자

  • 산술연산자 : + - * / // ** %

  • 관계연산자 : == != > < >= <=

  • 논리연산자 : not and or

    ※ **~~&&   ~~** 파이썬에서 지원하지 않는다.
Read more »

SW Expert Academy - D2_1986

Posted on 2019-08-24 | In ALGORITHM

D2_1986. 지그재그 숫자

문제:

  • 1부터 N까지의 숫자에서 홀수는 더하고 짝수는 뺐을 때 최종 누적된 값을 구해보자.

  • [예제 풀이]

    N이 5일 경우,

    1 – 2 + 3 – 4 + 5 = 3

    N이 6일 경우,

    1 – 2 + 3 – 4 + 5 – 6 = -3

입력:

  1. 테스트 케이스 T
  2. N (1 ≤ N ≤ 10)

출력:

ex)

#1 5 #2 7 #3 6

생각한 로직:

  • N까지 for 문으로 돌리면서 홀수, 짝수를 판단 홀수는 더하고 짝수는 빼는 코딩 (D1~D3까지의 문제는 최적화보다는 노가다를 해보라는 문제들이니 그냥 다 빠짐없이 잘 돌려보자)
  • 가우스의 덧셈 공식을 이용해서 수학 문제로 풀수도 있다.

코딩:

1
2
3
4
5
6
7
8
9
10
for tc in range(1,int(input())+1):
    N=int(input())
    result=0
    for i in range(1,N+1):
        if i%2==0:
            result-=i
        else:
            result+=i

    print("#{} {}".format(tc,result))
Read more »

python_얕은복사,깊은복사

Posted on 2019-08-23 | In LANGUAGE

copy 모듈_얕은 복사, 깊은 복사

  • 주소 : 모든 변수는 저장된 메모리 어드레스를 가지며, 각 개체는 고유의 주소가 있다.
  • 복사 : 변수의 주소를 공유하거나 다른 이름으로 저장해 사용하는 것이다.
얕은 복사 깊은 복사
copy() deepcopy()
원본이 바뀌면 같이 바뀐다. 원복이 바뀌어도 복사본은 안바뀐다.
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
from copy import copy
from copy import deepcopy

a= [1,2,3]
b=a
c=deepcopy(a)
print("a 값 : {}".format(a))
print("b = a 값 : {}".format(b))
print("a 딥카피 값 : {}".format(c))
print("a 주소:{} b 주소:{}".format(id(a),id(b)))
print("a값을 1,2 세트 값으로 변경")

#수정을 할때
a.append(4)
print("a 값 : {}".format(a))
print("b = a 값 : {}".format(b))
print("a 딥카피 값 : {}".format(c))
print("a 주소:{} b 주소:{}".format(id(a),id(b)))

#a에 새로운 변수를 집어 넣으면 주소가 변경된다.
a= [1,2]
print("a 값 : {}".format(a))
print("b = a 값 : {}".format(b))
print("a 딥카피 값 : {}".format(c))
print("a 주소:{} b 주소:{}".format(id(a),id(b)))
Read more »

SW Expert Academy - D2_1984

Posted on 2019-08-23 | In ALGORITHM

D2_1984. 중간 평균값 구하기

문제:

  • 10개의 수를 입력 받아, 최대 수와 최소 수를 제외한 나머지의 평균값을 출력하는 프로그램을 작성하라.
  • (소수점 첫째 자리에서 반올림한 정수를 출력한다.)

입력:

  1. 테스트 케이스 T
  2. 테스트 케이스의 첫 번째 줄에는 10개의 수가 주어진다. (각 수는 0 이상 10000 이하의 정수이다.)

출력:

ex)

#1 5 #2 7 #3 6

생각한 로직:

  • 10개의 수를 입력 받으니 받은 수를 하나씩 탐색하면서 합을 구하고 최대와 최소값을 찾아 마지막에 제외해주어 평균값을 출력한다.

코딩:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for tc in range(1,int(input())+1):
    #숫자를 받는다.
    numlist=list(map(int,input().split()))
    result=0
    #받은 숫자마다 리스트 안에서 큰 값과 작은 값을 찾아야 하니 리스트 안 원소로 초기화
    nMax=numlist[0]
    nMin=numlist[0]
    for num in numlist:
        if num > nMax:
            nMax = num
        if num < nMin:
            nMin = num
        result+=num
    result=(result-nMax-nMin)/(len(numlist)-2)
    #python print 포매팅 문법 참고
    print("#{} {:.0f}".format(tc,result))
Read more »
1 … 16 17 18 … 32
Sik

Sik

156 posts
7 categories
30 tags
RSS
© 2021 Sik
Powered by Jekyll
Theme - NexT.Muse