완주하지 못한 선수 

 

 

def solution(participant, completion):

    answer = ''

    participant.sort()

    completion.sort()

        

    for i in range(0, len(completion)) : 

        if( participant[i] != completion[i] ) :

            answer = participant[i]

            break;

        # print(participant[i])

    

    

    if(answer == '') :

        answer = participant[len(completion)]

 

        

    return answer

---------------모의고사

def solution(answers):

    finalAnswer = []

    orders = [0,1,2]

    answer1 = [1,2,3,4,5] * ( len(answers)//5 + 2 ) # 전체 길이에 맞게, 그보다는 약간 넉넉하게 추가함. 

    answer2 = [2,1,2,3,2,4,2,5] * ( len(answers)//8 + 2 )

    answer3 = [3,3,1,1,2,2,4,4,5,5] * ( len(answers)//10 + 2 )

    answer1result = []

    answer2result = []

    answer3result = []

        

    # print(answers)

    # print(answer1[:len(answers)])

    # print(answer2[:len(answers)])

    # print(answer3[:len(answers)])

    

    for i, j, k, l in zip(answers, answer1[:len(answers)] , answer2[:len(answers)], answer3[:len(answers)] ) : 

        temp = i - j # 값을 빼서 0값이 나오면 정답이므로, 그 갯수를 추가함. 

        if( 0 == temp ) : 

            answer1result.append(temp)

            # print( 'answer1result : ',answer1result )

        

        temp = i - k

        if( 0 == temp ) : 

            answer2result.append(temp)

            # print( 'answer2result : ',answer2result )

        

        temp = i - l

        if( 0 == temp ) : 

            answer3result.append(temp)

            # print( 'answer3result : ',answer3result )

    

    Results = [ len(answer1result), len(answer2result), len(answer3result) ]

    # print( Results )

    maxResult = max(Results)

    # print( maxResult ) 

    

    for i, j in zip(Results, orders) :

        if ( maxResult == i ) : 

            # finalAnswer.append( Results.index(i) + 1 )

            finalAnswer.append(j + 1) 

            

    

    

    return finalAnswer

 

 

---------------------------K번째 수----------------

 

def solution(array, commands):

    answer = []

    

    for i in range ( 0 , len(commands) ) : #len(commands)-1

        splitArray = array[ commands[i][0] - 1 : commands[i][1] ] # 시작은 포함 but 끝 값은 포함X

        splitArray.sort()

        

        answer.append( splitArray[commands[i][2] - 1] ) 

        # 제일기획 UI, UX : 6월말?

        # 삼성전자 데이터 통합

        # print('answer : ', answer)

       

    return answer

 

----------체육복-----------------------------------------------------------------------

def solution(n, lost, reserve):

    answer = 0

 

    myL = [1] * n 

    # print('ini : ', myL )

    

    for i in lost : 

        myL[i-1] = 0

    # print('lost : ', myL )

    

    for i in reserve : 

        myL[i-1] +=  1

    # print('reserve : ', myL )

    

    for i in range(n) : 

        # print('ii', i)

        if( i > 0 and myL[i-1] > 1 and myL[i] == 0) : 

            myL[i-1] = 1 

            myL[i] = 1

            # print('return : ', myL )

        elif ( i > 0 and 0 == myL[i-1] and myL[i] > 1 ) : 

            myL[i-1] = 1 

            myL[i] = 1

 

    for i in range(n) : 

        if( myL[i] > 0 ):

            answer += 1

 

    return answer

-------------2016년--------------------------------------------------------------------

def solution(a, b):
    answer = ''
    theDay = 0 
    
    days = [ 'THU','FRI','SAT', 'SUN','MON','TUE','WED' ]
    months = [ 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    
    for i in range (a) : 
        theDay += months[i]
        # print(theDay)
    theDay += b
    # print('end: ',theDay)
    
    answer = days[theDay % 7] 
    return answer

----가운데 글자 가져오기-----------------------------------------------------------------------------

def solution(s):
    answer = ''
    
#     print(len(s))
#     print((len(s) - 1)/2)
    
#     print( s[ int ((len(s) - 1) / 2) ] )
    
    answer = s[ int ((len(s) - 1) / 2) ]
    
    if( 0 == len(s) % 2 ) : 
        answer = answer + s[ int ((len(s) + 1) / 2) ]
    
    # print(len(s) % 2)
    
    return answer

----------------같은 숫자는 싫어-----------------------------------------------------------------

def solution(arr):

    # 첫째 자리 입력

    answer = [arr[0]]

 

    for i in range(len(arr)-1) : 

        # 1. 길이가 1일 경우

        if( 1 == len(arr) ) :  

            break

 

        # 2. 길이가 2 이상일 경우

        if( arr[i] != arr[i+1] ) : 

            answer.append(arr[i+1])

    

    return answer

 

------나누어 떨어지는 숫자 배열---------------------------------------------------------------------------

def solution(arr, divisor):

    answer = []

    

    for i in arr : 

        if( 0 == i % divisor ) : 

            answer.append(i)

    

    answer.sort()

    

    if( 0 == len(answer) ) :

        answer.append(-1)

 

    

    return answer

------두 정수 사이의 합---------------------------------------------------------------------------

def solution(a, b):
    answer = 0
       
    if( a > b) : 
        temp = a
        a = b
        b = temp
        
    for i in range(a, b + 1) : 
        answer += i
    
    return answer

--------문자열 내 마음대로 정렬하기-------------------------------------------------------------------------

def solution(strings, n):

    answer = []

    myL = []

    myL2 = []

    tempL = []

    # 문자열 쪼개서 다시 넣기 ( sun -> uns )

    # 순서대로 정렬하기 

    # 같은 알파벳으로 시작하는건 따로 리스트 만들어 넣고 정렬하기

    # 정렬한걸 차례대로 answer에 넣기

    

    for i in range( len(strings) ) : 

        # print( strings[i][n:] + strings[i][:n] )

        myL.append( strings[i][n:] + strings[i][:n] )

        myL.sort()

    print('myL', myL)

    

    for i in range( len(myL) ) : 

        temp = myL[i][-n:] + myL[i][:-n]

        myL2.append(temp)

        # print(  '결과: ', myL[i][-n:] + myL[i][:-n]) 

    print('myL2',myL2)

    

    for i in range( len(myL)-1 ) : 

        if ( myL2[i][n] == myL2[i+1][n] ) : 

            tempL.append( myL2[i] )

            if( i == len(myL)-2) : 

                tempL.append( myL2[i+1] )

        elif ( myL2[i][n] != myL2[i+1][n] ) : 

            print('myL2[i][n]',myL2[i][n])

            print('myL2[i+1][n]',myL2[i+1][n])

            tempL.append( myL2[i] )

            tempL.sort()

            for j in range(len(tempL)) : 

                answer.append(tempL[j])

                print('answer',answer)

                print('j: ',j)

                print('len(myL)-2: ',len(myL)-2)

            tempL = []

            if( i == len(myL)-2) : 

                answer.append( myL2[i+1] )

                print('enddddddd')

        

    print('tempL',tempL )

    

    return answer

------------------문자열 내 p와 y의 개수---------------------------------------------------------------

def solution(s):

    answer = True    

    upperStr  = list( s.upper() )

    countP = 0

    countY = 0

    

    for i in range(len(s)) :

        if ( 'P' == upperStr[i] ) :

            countP += 1

        elif ( 'Y' == upperStr[i] ) :

            countY += 1

    

    if( countY != countP ) : 

        answer = False

 

    return answer

--------------------------문자열 내림차순으로 배치하기-------------------------------------------------------

def solution(s):
    answer = ''
    mylist = list(s)
    answerlist = sorted(mylist, reverse=True)
    
    answer = ''.join(answerlist)
    
    return answer

-------------------문자열 다루기 기본--------------------------------------------------------------

def solution(s):

    answer = True

    

    numbers = ['1','2','3','4','5','6','7','8','9','0']

    print(len(s))

    

    if( 4 == len(s) or 6 == len(s) ) : 

        try : 

            for i in range(len(s)) :

                temp =  s[i]

                numbers.index(temp)

                # print(temp)

                # print( numbers.index(temp) )

            # answer = True

        except : 

            # print( 'error' )

            answer = False

            return answer

        

    else : 

        answer = False 

        return answer 

      

    return answer

------------------서울에서 김서방 찾기---------------------------------------------------------------

def solution(seoul):
    # print(len(seoul))
    
    for i in range( 0 , len(seoul) ) : 
        # print(seoul[i])
        if( 'Kim' == seoul[i] ) : 
            answer = '김서방은 {0}에 있다'.format(i)
    return answer

-------------------소수 찾기--------------------------------------------------------------

import  math

def solution(n):

    answer = 0

    primeNumbers = set( range(2, n+1) )

    # print(primeNumbers)

    m = int(n ** 0.5)

    # print( int(math.pow(n+1, 0.5) )

    for i in range( 2, m+1  ) : 

        if i in primeNumbers :

            primeNumbers = primeNumbers - set( range( i*2, n+1 , i ) )

 

    answer = len(primeNumbers)

    # print(primeNumbers)

    return answer

------------------박수박수박수박수박수---------------------------------------------------------------

def solution(n):
    answer = ''
    mok = n//2
    # print(mok)
    
    for i in range (0, mok) : 
        answer +=  "수박"
    
    if( 1 == n % 2 ) : 
        answer +=  "수"
    
    print(answer[0:3])
    print(answer[1:3])
    print(answer[:3])
    
    return answer

-------시저 암호--------------------------------------------------------------------------

import re

def solution(s, n):

    answer = ''

    

    alpha1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm','n', 'o', 'p', 'q', 'r','s', 't', 'u', 'v', 'w','x', 'y', 'z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm','n', 'o', 'p', 'q', 'r','s', 't', 'u', 'v', 'w','x', 'y', 'z']

    

    alpha2 = ['A', 'B','C', 'D', 'E', 'F', 'G','H', 'I', 'J', 'K', 'L', 'M', 'N','O', 'P', 'Q', 'R', 'S','T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'A', 'B','C', 'D', 'E', 'F', 'G','H', 'I', 'J', 'K', 'L', 'M', 'N','O', 'P', 'Q', 'R', 'S','T', 'U', 'V', 'W', 'X', 'Y', 'Z']

    

    mystr = list(s)

 

    for i in mystr : 

 

        if( i in alpha1 ) : 

            answer += alpha1[ alpha1.index(i)+n ]

        elif( i in alpha2 ) : 

            answer += alpha2[ alpha2.index(i)+n ]

        else : 

            answer += ' '

    

    return answer

 

 

-------문자열을 정수로 바꾸기-------------------------------------------------------------------

def solution(s):
    answer = 0
           
    return int(s)

--------------약수의 합------------------------------------------------------------

def solution(n):

    answer = 0

    yaksu = [n]

    

    for i in range( 1, n//2 + 1 ) : 

        if( 0 == n%i ) : 

            yaksu.append(i)

        # print(n//2)

    

    print(yaksu)

 

    return sum(yaksu)

 

---------------------예산-----------------------------------------------------

def solution(d, budget):
    answer = 0
    mysum = 0
    
    d.sort()
    # print(d)
    
    for i in range(len(d)) : 
        mysum += d[i]
        answer += 1
        if( mysum > budget ) :
            mysum -= d[i]
            answer -= 1
    # print(mysum)
    
    return answer

--------------------------

비밀지도

------------------------------------------------

def solution(n, arr1, arr2):

    answer = []

    map1 =  []

    myStr = ''

    

    for i,j in zip(arr1, arr2) : 

        tempii = format(i, 'b')

        tempjj = format(j, 'b')

        map1.append(str( int( tempii ) + int( tempjj ) ) ) 

    for i in map1 :

        for j in range( len(i) ) : 

            if( int( i[j] ) > 0) : 

                myStr += '#'

            else : 

                myStr += ' '

        if( n != len(i) ) : 

            myStr = ' ' * (n - len(i)) + myStr

        answer.append(myStr)

        myStr = ''

 

    return answer

 

 

50대 사건으로 보는 돈의 역사

홍춘욱  | 로크미디어 | 2019년 04월 24일

 

개인적으로는 매우 가벼운 책이라고 생각한다. 

우선 책이 빈공간이 많아서.. 빼곡히 채운다면 한 200페이지 정도? 

내용이 좀 가벼운 편이나 전체적인 역사적 흐름을 유지하기 위해서는 그러수밖에 없지 않나 싶기도 하다.

다만 ... 글의 수준이라기 보다는.. 양 자체가 적어서 아쉽다. 그래서 비싸다.

난 빌려 보았지만... ㅎㅎ

대항해시대 쯤부터 현재까지 주요한 역사들과 돈이 엮여있는 부분들을 설명해 주었다. 

난 배경지식이 좀 있어서... 그다지 어렵진 않았고, 가볍게 읽기에는 좋다. 

에러 화면

 

The datadir ('pages') at ./data/pages is not found, isn't accessible or writable. You should check your config and permission settings. 

에러가 계속 뜬다면... 

SELinux 때문입니다. ( 리눅스 보안기능 ) 

https://www.dokuwiki.org/install:centos 페이지에 찾아가면 됩니다.

해결 가능한 옵션이 2개 있는데
그중에서 1번을 참고하면 됩니다.(아래글에 표시)

아래 빨간색 명령어를 사용하면 됩니다. 

Option 1

Switch SELinux to permissive mode, only for the httpd(Apache) service. This will leave SELinux enforcing for the rest of the system. This is the easier solution, but arguably also the less safe, as SELinux does not provide any protection for httpd.

  • sudo yum install policycoreutils-python
  • sudo semanage permissive -a httpd_t

 

참고로 저는
AWS EC2에서 
CentOS 7버전,
php 버전 7.0.33 을 사용하였고, 

dokuWIKI는 옵션을 모두 포함한 것을 사용했습니다.

 

결과화면

+ Recent posts